Редактировать learn.py

This commit is contained in:
Markov Andrey
2026-06-30 21:40:15 +00:00
parent 0f75fa6a98
commit 58b9f3633a

View File

@@ -3,10 +3,8 @@
Команды управления режимом обучения: !learn, !stop_learn, !global_learn. Команды управления режимом обучения: !learn, !stop_learn, !global_learn.
Поддерживают флаги --global и --title. Поддерживают флаги --global и --title.
Изменения для групповой работы: В новой архитектуре команды только управляют состоянием learning_mode,
- В групповом чате !learn не нужен для файлов (они индексируются автоматически), индексация выполняется через RAG-сервер.
но может использоваться для ссылок (если пользователь хочет добавить ссылку в БЗ комнаты).
- Режим обучения в комнате сохраняется с привязкой к комнате.
""" """
import logging import logging
@@ -33,44 +31,25 @@ class LearnCommand(Command):
if user_jid not in self.bot.config.admin_jids: if user_jid not in self.bot.config.admin_jids:
reply = msg.reply("У вас нет прав на глобальное обучение.") reply = msg.reply("У вас нет прав на глобальное обучение.")
if reply: if reply:
reply.send() # исправлено reply.send()
else:
logger.error("Не удалось отправить сообщение о недостатке прав на глобальное обучение")
return return
if room_jid: if room_jid:
# В групповом чате режим обучения для комнаты (только ссылки, файлы и так автоматом)
mode = "room" mode = "room"
# Сохраняем режим с указанием комнаты
self.bot.learning_mode[user_jid] = (mode, room_jid) self.bot.learning_mode[user_jid] = (mode, room_jid)
if title: if title:
reply = msg.reply(f"🎓 Режим обучения ВКЛЮЧЁН для КОМНАТНОЙ БЗ (--title \"{title}\"). При следующей ссылке будет использован заголовок.") reply = msg.reply(f"🎓 Режим обучения ВКЛЮЧЁН для КОМНАТНОЙ БЗ (--title \"{title}\"). При следующей ссылке будет использован заголовок.")
if reply:
reply.send() # исправлено
else:
logger.error("Не удалось отправить подтверждение обучения для комнаты с title")
else: else:
reply = msg.reply(f"🎓 Режим обучения ВКЛЮЧЁН для КОМНАТНОЙ БЗ. Теперь можно отправить ссылку она добавится в БЗ комнаты.") reply = msg.reply(f"🎓 Режим обучения ВКЛЮЧЁН для КОМНАТНОЙ БЗ. Теперь можно отправить ссылку она добавится в БЗ комнаты.")
if reply:
reply.send() # исправлено
else:
logger.error("Не удалось отправить подтверждение обучения для комнаты")
else: else:
# Личный чат
mode = "global" if is_global else "personal" mode = "global" if is_global else "personal"
self.bot.learning_mode[user_jid] = (mode, None) # храним кортеж для единообразия self.bot.learning_mode[user_jid] = (mode, None)
if title: if title:
reply = msg.reply(f"🎓 Режим обучения ВКЛЮЧЁН для {'ГЛОБАЛЬНОЙ' if is_global else 'ЛИЧНОЙ'} БЗ (--title \"{title}\").") reply = msg.reply(f"🎓 Режим обучения ВКЛЮЧЁН для {'ГЛОБАЛЬНОЙ' if is_global else 'ЛИЧНОЙ'} БЗ (--title \"{title}\").")
if reply:
reply.send() # исправлено
else:
logger.error("Не удалось отправить подтверждение обучения с title")
else: else:
reply = msg.reply(f"🎓 Режим обучения ВКЛЮЧЁН для {'ГЛОБАЛЬНОЙ' if is_global else 'ЛИЧНОЙ'} БЗ.") reply = msg.reply(f"🎓 Режим обучения ВКЛЮЧЁН для {'ГЛОБАЛЬНОЙ' if is_global else 'ЛИЧНОЙ'} БЗ.")
if reply: if reply:
reply.send() # исправлено reply.send()
else:
logger.error("Не удалось отправить подтверждение обучения")
def get_help(self) -> str: def get_help(self) -> str:
return "Включает режим обучения (следующий файл/ссылка добавятся в БЗ). В личном чате личная/глобальная, в групповом комнатная. Флаги: --global (только личный), --title \"Название\"." return "Включает режим обучения (следующий файл/ссылка добавятся в БЗ). В личном чате личная/глобальная, в групповом комнатная. Флаги: --global (только личный), --title \"Название\"."
@@ -85,9 +64,7 @@ class StopLearnCommand(Command):
self.bot.learning_mode.pop(user_jid, None) self.bot.learning_mode.pop(user_jid, None)
reply = msg.reply("✅ Режим обучения ВЫКЛЮЧЕН.") reply = msg.reply("✅ Режим обучения ВЫКЛЮЧЕН.")
if reply: if reply:
reply.send() # исправлено reply.send()
else:
logger.error("Не удалось отправить подтверждение выключения обучения")
def get_help(self) -> str: def get_help(self) -> str:
return "Выключает режим обучения." return "Выключает режим обучения."
@@ -106,23 +83,17 @@ class GlobalLearnCommand(Command):
if not self.check_permission(user_jid): if not self.check_permission(user_jid):
reply = msg.reply("⛔ Нет прав.") reply = msg.reply("⛔ Нет прав.")
if reply: if reply:
reply.send() # исправлено reply.send()
else:
logger.error("Не удалось отправить сообщение о недостатке прав (learn)")
return return
if room_jid: if room_jid:
reply = msg.reply("⚠️ Команда !global_learn работает только в личном чате.") reply = msg.reply("⚠️ Команда !global_learn работает только в личном чате.")
if reply: if reply:
reply.send() # исправлено reply.send()
else:
logger.error("Не удалось отправить сообщение об ограничении !global_learn")
return return
self.bot.learning_mode[user_jid] = ("global", None) self.bot.learning_mode[user_jid] = ("global", None)
reply = msg.reply("🌐 Режим ГЛОБАЛЬНОГО обучения включён.") reply = msg.reply("🌐 Режим ГЛОБАЛЬНОГО обучения включён.")
if reply: if reply:
reply.send() # исправлено reply.send()
else:
logger.error("Не удалось отправить подтверждение глобального обучения")
def get_help(self) -> str: def get_help(self) -> str:
return "Включает режим глобального обучения (админ, только в личном чате)." return "Включает режим глобального обучения (админ, только в личном чате)."