v0.7.3: Косметические изменения в меню

Удалено из меню:
- Команда /ai из списка команд бота
- Кнопка 'Управление доступом' из меню настроек
- Кнопка 'AI-провайдер' из меню настроек

Также удалены обработчики:
- access_menu, show_access, add_access, remove_access
- ai_provider_menu, ai_provider_toggle, ai_provider_info

Команды /ai* и AI-провайдеры остаются доступными через:
- /ai_presets, /ai_off, /ai_qwen, /ai_giga_*
- Прямые команды /ai

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
mirivlad 2026-02-28 11:25:48 +08:00
parent d2f22ee149
commit 81148ee567
3 changed files with 1 additions and 122 deletions

1
bot.py
View File

@ -1724,7 +1724,6 @@ async def post_init(application: Application):
BotCommand("ai_giga_auto", "🧠 GigaChat Авто (Lite/Pro)"), BotCommand("ai_giga_auto", "🧠 GigaChat Авто (Lite/Pro)"),
BotCommand("ai_giga_lite", "🚀 GigaChat Lite (дешево)"), BotCommand("ai_giga_lite", "🚀 GigaChat Lite (дешево)"),
BotCommand("ai_giga_pro", "👑 GigaChat Pro (максимум)"), BotCommand("ai_giga_pro", "👑 GigaChat Pro (максимум)"),
BotCommand("ai", "Задача для Qwen Code AI"),
BotCommand("memory", "Статистика памяти ИИ"), BotCommand("memory", "Статистика памяти ИИ"),
BotCommand("facts", "Показать сохранённые факты"), BotCommand("facts", "Показать сохранённые факты"),
BotCommand("forget", "Удалить факт по номеру"), BotCommand("forget", "Удалить факт по номеру"),

View File

@ -391,13 +391,6 @@ async def menu_callback(update: Update, context: ContextTypes.DEFAULT_TYPE):
reply_markup=menu_builder.get_keyboard("settings") reply_markup=menu_builder.get_keyboard("settings")
) )
elif callback == "access_menu":
await query.edit_message_text(
"👥 *Управление доступом*",
parse_mode="Markdown",
reply_markup=menu_builder.get_keyboard("access")
)
# Обработка команд выполнения # Обработка команд выполнения
elif callback.startswith("cmd_"): elif callback.startswith("cmd_"):
# Поиск команды в меню # Поиск команды в меню
@ -444,30 +437,6 @@ async def menu_callback(update: Update, context: ContextTypes.DEFAULT_TYPE):
reply_markup=menu_builder.get_keyboard("settings") reply_markup=menu_builder.get_keyboard("settings")
) )
elif callback == "show_access":
if config.allowed_users:
text = "👥 *Разрешённые пользователи:*\n" + "\n".join(f"• `{uid}`" for uid in config.allowed_users)
else:
text = "👥 *Доступ открыт для всех*\n\n(список разрешённых пользователей пуст)"
await query.edit_message_text(text, parse_mode="Markdown")
elif callback == "add_access":
await query.edit_message_text(
" *Добавление пользователя*\n\n"
"Для добавления пользователя отредактируйте `.env`:\n"
"```\nALLOWED_USERS=123456789,987654321\n```\n"
"Ваш ID можно узнать через @userinfobot",
parse_mode="Markdown"
)
elif callback == "remove_access":
if config.allowed_users:
text = " *Удаление пользователя*\n\n" + "\n".join(f"• `{uid}`" for uid in config.allowed_users)
text += "\n\nУдалите ID из `.env` чтобы убрать доступ"
else:
text = " Список пуст, некого удалять"
await query.edit_message_text(text, parse_mode="Markdown")
elif callback == "about": elif callback == "about":
await query.edit_message_text( await query.edit_message_text(
f" *О боте*\n\n" f" *О боте*\n\n"
@ -620,90 +589,3 @@ async def menu_callback(update: Update, context: ContextTypes.DEFAULT_TYPE):
reply_markup=menu_builder.get_keyboard("memory") reply_markup=menu_builder.get_keyboard("memory")
) )
# --- Обработчики меню AI-провайдера ---
elif callback == "ai_provider_menu":
state.current_menu = "ai_provider"
# Получаем текущего провайдера
from bot.ai_provider_manager import get_ai_provider_manager
provider_manager = get_ai_provider_manager()
current_provider = provider_manager.get_current_provider(state)
providers_info = provider_manager.get_all_providers_info(current_provider)
output = "🤖 **AI-провайдеры**\n\n"
output += f"*Текущий провайдер:* "
for info in providers_info:
icon = "" if info.is_active else ""
status = "✓ Доступен" if info.available else "✗ Недоступен"
output += f"\n\n{icon} **{info.name}** — {status}\n"
output += f"_{info.description}_\n"
output += "\n\nВыберите действие:"
await query.edit_message_text(
output,
parse_mode="Markdown",
reply_markup=menu_builder.get_keyboard("ai_provider")
)
elif callback == "ai_provider_toggle":
# Переключаем провайдер
from bot.ai_provider_manager import get_ai_provider_manager
provider_manager = get_ai_provider_manager()
current_provider = provider_manager.get_current_provider(state)
new_provider = "gigachat" if current_provider == "qwen" else "qwen"
success, message = provider_manager.switch_provider(user_id, new_provider, state_manager)
if success:
provider_info = provider_manager.get_provider_info(new_provider, is_active=True)
await query.edit_message_text(
f"{message}\n\n"
f"**{provider_info.name}**\n"
f"_{provider_info.description}_",
parse_mode="Markdown",
reply_markup=menu_builder.get_keyboard("ai_provider")
)
else:
await query.edit_message_text(
f"{message}\n\n"
"Проверьте настройки в .env файле.",
parse_mode="Markdown",
reply_markup=menu_builder.get_keyboard("ai_provider")
)
elif callback == "ai_provider_info":
# Показываем подробную информацию
from bot.ai_provider_manager import get_ai_provider_manager
provider_manager = get_ai_provider_manager()
current_provider = provider_manager.get_current_provider(state)
output = " **Информация о провайдерах**\n\n"
# Qwen
output += "**🔹 Qwen Code**\n"
output += "Alibaba Qwen Code CLI — мощный AI-ассистент с:\n"
output += "• Поддержкой инструментов (поиск, RSS, SSH, cron)\n"
output += "• Потоковым выводом ответа\n"
output += "• Контекстом до 256K токенов\n"
output += "• RAG-памятью на ChromaDB\n\n"
# GigaChat
output += "**🟢 GigaChat**\n"
output += "Sber GigaChat API — российская AI-модель:\n"
output += "• Поддержка русского языка из коробки\n"
output += "• Модели: GigaChat-Pro, GigaChat-Max\n"
output += "• Генерация ответов и изображений\n"
output += "• Требует настройки в .env\n\n"
output += f"*Текущий провайдер:* `{current_provider}`\n"
output += "\nИспользуйте `/ai` для переключения."
await query.edit_message_text(
output,
parse_mode="Markdown",
reply_markup=menu_builder.get_keyboard("ai_provider")
)

View File

@ -171,9 +171,7 @@ def init_menus(menu_builder: MenuBuilder):
MenuItem("📝 Изменить имя бота", "set_name", icon="📝"), MenuItem("📝 Изменить имя бота", "set_name", icon="📝"),
MenuItem("📄 Изменить описание", "set_description", icon="📄"), MenuItem("📄 Изменить описание", "set_description", icon="📄"),
MenuItem("🎨 Изменить иконку", "set_icon", icon="🎨"), MenuItem("🎨 Изменить иконку", "set_icon", icon="🎨"),
MenuItem("👥 Управление доступом", "access_menu", icon="👥"),
MenuItem("🧠 Память ИИ", "memory_menu", icon="🧠"), MenuItem("🧠 Память ИИ", "memory_menu", icon="🧠"),
MenuItem("🤖 AI-провайдер", "ai_provider_menu", icon="🤖"),
MenuItem("⬅️ Назад", "main", icon="⬅️"), MenuItem("⬅️ Назад", "main", icon="⬅️"),
] ]
menu_builder.add_menu("settings", settings_menu) menu_builder.add_menu("settings", settings_menu)