Редактировать learn.py
This commit is contained in:
@@ -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 "Включает режим глобального обучения (админ, только в личном чате)."
|
||||||
Reference in New Issue
Block a user