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_lite", "🚀 GigaChat Lite (дешево)"),
BotCommand("ai_giga_pro", "👑 GigaChat Pro (максимум)"),
BotCommand("ai", "Задача для Qwen Code AI"),
BotCommand("memory", "Статистика памяти ИИ"),
BotCommand("facts", "Показать сохранённые факты"),
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")
)
elif callback == "access_menu":
await query.edit_message_text(
"👥 *Управление доступом*",
parse_mode="Markdown",
reply_markup=menu_builder.get_keyboard("access")
)
# Обработка команд выполнения
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")
)
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":
await query.edit_message_text(
f" *О боте*\n\n"
@ -620,90 +589,3 @@ async def menu_callback(update: Update, context: ContextTypes.DEFAULT_TYPE):
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_description", icon="📄"),
MenuItem("🎨 Изменить иконку", "set_icon", icon="🎨"),
MenuItem("👥 Управление доступом", "access_menu", icon="👥"),
MenuItem("🧠 Память ИИ", "memory_menu", icon="🧠"),
MenuItem("🤖 AI-провайдер", "ai_provider_menu", icon="🤖"),
MenuItem("⬅️ Назад", "main", icon="⬅️"),
]
menu_builder.add_menu("settings", settings_menu)