добавил обновление списков в реальном времени
исправил поиск пользователя убрал лишние qDebug
This commit is contained in:
+27
-45
@@ -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 ¶meters)
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user