добавил обновление списков в реальном времени

исправил поиск пользователя
убрал лишние qDebug
This commit is contained in:
2026-02-09 22:24:24 +03:00
parent cbb875f3f8
commit 39f0c447c1
11 changed files with 440 additions and 189 deletions
+27 -45
View File
@@ -25,44 +25,27 @@ void CommandProcessor::setContext(const Context& context)
QString CommandProcessor::generateResponse(QString userIndex, const QString &command, const QString &message)
{
qDebug() << "generateResponse: userIndex =" << userIndex << "command =" << command;
// Сначала пробуем найти пользователя по displayName
QString username = "";
if (m_context.userManager) {
User* user = m_context.userManager->findUser(userIndex);
User* user = m_context.userManager->findUserById(userIndex);
if (user) {
username = user->displayName;
qDebug() << "Найден пользователь:" << username;
} else {
qDebug() << "Пользователь не найден в UserManager по displayName:" << userIndex;
// Попробуем найти по ID
user = m_context.userManager->findUserById(userIndex);
if (user) {
username = user->displayName;
qDebug() << "Найден пользователь по ID:" << username;
}
username = user->displayName;
}
}
if (username.isEmpty()) {
// Если не нашли в UserManager, используем переданное имя
username = userIndex;
qDebug() << "Используем переданное имя:" << username;
}
Command cmd = findCommand(command);
if (cmd.command.isEmpty()) {
qDebug() << "Команда не найдена:" << command;
return "";
}
qDebug() << "Найдена команда:" << cmd.command << "ответ:" << cmd.response;
QString fullCommand = command + (message.isEmpty() ? "" : " " + message);
QString result = processCommand(username, fullCommand, cmd.response);
qDebug() << "Итоговый результат:" << result;
return result;
}
@@ -175,26 +158,18 @@ QString CommandProcessor::parseRandomNumbers(const QString &response)
QRegularExpression regex("\\[\\[([^\\]]+)\\]\\]");
QRegularExpressionMatchIterator matches = regex.globalMatch(response);
qDebug() << "parseRandomNumbers: исходная строка:" << response;
qDebug() << "Найдено совпадений:" << matches.hasNext();
while (matches.hasNext()) {
QRegularExpressionMatch match = matches.next();
QString rangeName = match.captured(1);
qDebug() << "Найден диапазон:" << rangeName;
if (m_context.randomManager) {
int randomNumber = m_context.randomManager->getRandomValue(rangeName);
qDebug() << "Получено случайное число:" << randomNumber << "для диапазона" << rangeName;
result.replace("[[" + rangeName + "]]", QString::number(randomNumber));
} else {
qDebug() << "RandomManager не инициализирован!";
int fallbackNumber = QRandomGenerator::global()->bounded(1, 101);
result.replace("[[" + rangeName + "]]", QString::number(fallbackNumber));
}
}
qDebug() << "Результат после замены:" << result;
return result;
}
@@ -271,7 +246,6 @@ QString CommandProcessor::parseBan(const QString &response, const QString &sende
if (m_context.twitchAPI) {
if (m_context.userManager) {
User* user = m_context.userManager->findUser(sender);
qDebug() << user->displayName;
if (user && !user->id.isEmpty()) {
if (banSeconds > 0) {
m_context.twitchAPI->banUserTime(user->id, banSeconds);
@@ -487,7 +461,6 @@ QString CommandProcessor::getPeriodEnding(int n, int r)
QString CommandProcessor::parseNeuralTemplates(const QString &response, const QString &sender, const QString &parameters)
{
QString result = response;
qDebug() << "parseNeuralTemplates: входная строка:" << response;
// Исправленное регулярное выражение
QRegularExpression regex("<\\|([^<]+)<\\|");
@@ -500,11 +473,9 @@ QString CommandProcessor::parseNeuralTemplates(const QString &response, const QS
matchCount++;
QRegularExpressionMatch match = matches.next();
QString templateName = match.captured(1).trimmed();
qDebug() << "Найден шаблон:" << templateName << "на позиции" << match.capturedStart();
if (m_context.neuralTemplateManager) {
QString templateText = m_context.neuralTemplateManager->getTemplateText(templateName);
qDebug() << "Текст шаблона:" << templateText;
if (!templateText.isEmpty()) {
// Заменяем плейсхолдеры в шаблоне
@@ -512,8 +483,6 @@ QString CommandProcessor::parseNeuralTemplates(const QString &response, const QS
processedTemplate.replace("[TO]", parameters);
processedTemplate.replace("[USERNAME]", sender);
qDebug() << "Шаблон после замены плейсхолдеров:" << processedTemplate;
// Получаем ответ от нейросети
QString aiResponse;
if (m_context.neuralManager) {
@@ -539,7 +508,6 @@ QString CommandProcessor::parseNeuralTemplates(const QString &response, const QS
});
// Отправляем запрос к нейросети
qDebug() << "Отправляем запрос к нейросети:" << processedTemplate;
m_context.neuralManager->sendMessage(processedTemplate);
// Таймаут 30 секунд
@@ -551,16 +519,11 @@ QString CommandProcessor::parseNeuralTemplates(const QString &response, const QS
if (errorOccurred) {
aiResponse = QString("Ошибка нейросети: %1").arg(errorMessage);
qDebug() << "Ошибка нейросети:" << errorMessage;
} else if (!responseReceived) {
aiResponse = "Таймаут при ожидании ответа от нейросети";
qDebug() << "Таймаут нейросети";
} else {
qDebug() << "Получен ответ от нейросети:" << aiResponse;
}
} else {
aiResponse = "Нейросеть недоступна";
qDebug() << "NeuralManager не доступен";
}
// Заменяем шаблон на ответ от нейросети
@@ -570,7 +533,6 @@ QString CommandProcessor::parseNeuralTemplates(const QString &response, const QS
repl.text = aiResponse;
replacements.append(repl);
} else {
qDebug() << "Шаблон не найден или пустой:" << templateName;
// Если шаблон не найден, оставляем как есть или заменяем на заглушку
Replacement repl;
repl.start = match.capturedStart();
@@ -579,7 +541,6 @@ QString CommandProcessor::parseNeuralTemplates(const QString &response, const QS
replacements.append(repl);
}
} else {
qDebug() << "NeuralTemplateManager не доступен";
// Если менеджер не доступен, заменяем на заглушку
Replacement repl;
repl.start = match.capturedStart();
@@ -589,8 +550,6 @@ QString CommandProcessor::parseNeuralTemplates(const QString &response, const QS
}
}
qDebug() << "Всего найдено шаблонов:" << matchCount;
// Выполняем замены с конца к началу
std::sort(replacements.begin(), replacements.end(),
[](const Replacement &a, const Replacement &b) {
@@ -600,8 +559,31 @@ QString CommandProcessor::parseNeuralTemplates(const QString &response, const QS
for (const auto &replacement : replacements) {
result.replace(replacement.start, replacement.length, replacement.text);
}
qDebug() << "parseNeuralTemplates: результат:" << result;
return result;
}
void CommandProcessor::editCommand(const QString &oldCommand,const QString &newCommand,const QString &response)
{
Command oldCom = findCommand(oldCommand);
if (oldCom.command.isEmpty()) return;
for (int i = 0; i < m_commands.size(); ++i) {
if (m_commands[i].command.compare(oldCommand, Qt::CaseInsensitive) == 0) {
// Обновляем команду
m_commands[i].command = newCommand;
m_commands[i].response = response;
return;
}
}
}
void CommandProcessor::deleteCommand(const QString &commandName)
{
Command oldCom = findCommand(commandName);
if (oldCom.command.isEmpty()) return;
for (int i = 0; i < m_commands.size(); ++i) {
if (m_commands[i].command.compare(commandName, Qt::CaseInsensitive) == 0) {
m_commands.remove(i);
return;
}
}
}