fix: передача state в get_keyboard
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
parent
6397559dd1
commit
a645327006
18
bot.py
18
bot.py
|
|
@ -773,14 +773,16 @@ class MenuBuilder:
|
||||||
def get_menu(self, menu_name: str) -> List[MenuItem]:
|
def get_menu(self, menu_name: str) -> List[MenuItem]:
|
||||||
return self._menus.get(menu_name, [])
|
return self._menus.get(menu_name, [])
|
||||||
|
|
||||||
def get_keyboard(self, menu_name: str, user_id: int = None) -> InlineKeyboardMarkup:
|
def get_keyboard(self, menu_name: str, user_id: int = None, state: UserState = None) -> InlineKeyboardMarkup:
|
||||||
"""Создает InlineKeyboard для меню."""
|
"""Создает InlineKeyboard для меню."""
|
||||||
items = self._menus.get(menu_name, [])
|
items = self._menus.get(menu_name, [])
|
||||||
keyboard = []
|
keyboard = []
|
||||||
|
|
||||||
# Для главного меню — динамически меняем кнопку ИИ
|
# Для главного меню — динамически меняем кнопку ИИ
|
||||||
if menu_name == "main" and user_id:
|
if menu_name == "main" and user_id:
|
||||||
state = state_manager.get(user_id)
|
# Используем переданное состояние или получаем из менеджера
|
||||||
|
if state is None:
|
||||||
|
state = state_manager.get(user_id)
|
||||||
logger.info(f"get_keyboard: user_id={user_id}, ai_chat_mode={state.ai_chat_mode}")
|
logger.info(f"get_keyboard: user_id={user_id}, ai_chat_mode={state.ai_chat_mode}")
|
||||||
|
|
||||||
for item in items:
|
for item in items:
|
||||||
|
|
@ -979,7 +981,7 @@ async def start_command(update: Update, context: ContextTypes.DEFAULT_TYPE):
|
||||||
f"Или выберите сервер в меню.\n"
|
f"Или выберите сервер в меню.\n"
|
||||||
f"Команда /help покажет справку.",
|
f"Команда /help покажет справку.",
|
||||||
parse_mode="Markdown",
|
parse_mode="Markdown",
|
||||||
reply_markup=menu_builder.get_keyboard("main", user_id=update.effective_user.id)
|
reply_markup=menu_builder.get_keyboard("main", user_id=update.effective_user.id, state=state)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1004,7 +1006,7 @@ async def menu_command(update: Update, context: ContextTypes.DEFAULT_TYPE):
|
||||||
f"📁 *Директория:* `{working_dir}`\n\n"
|
f"📁 *Директория:* `{working_dir}`\n\n"
|
||||||
f"Выберите действие:",
|
f"Выберите действие:",
|
||||||
parse_mode="Markdown",
|
parse_mode="Markdown",
|
||||||
reply_markup=menu_builder.get_keyboard("main", user_id=update.effective_user.id)
|
reply_markup=menu_builder.get_keyboard("main", user_id=update.effective_user.id, state=state)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1081,7 +1083,7 @@ async def menu_callback(update: Update, context: ContextTypes.DEFAULT_TYPE):
|
||||||
f"🏠 *Главное меню*\n\n"
|
f"🏠 *Главное меню*\n\n"
|
||||||
f"💬 *Чат с ИИ:* {ai_status}",
|
f"💬 *Чат с ИИ:* {ai_status}",
|
||||||
parse_mode="Markdown",
|
parse_mode="Markdown",
|
||||||
reply_markup=menu_builder.get_keyboard("main", user_id=query.from_user.id)
|
reply_markup=menu_builder.get_keyboard("main", user_id=query.from_user.id, state=state)
|
||||||
)
|
)
|
||||||
|
|
||||||
elif callback == "preset_menu":
|
elif callback == "preset_menu":
|
||||||
|
|
@ -1327,7 +1329,7 @@ async def menu_callback(update: Update, context: ContextTypes.DEFAULT_TYPE):
|
||||||
f"📍 `{server.description}`\n\n"
|
f"📍 `{server.description}`\n\n"
|
||||||
f"Теперь команды выполняются на этом сервере.",
|
f"Теперь команды выполняются на этом сервере.",
|
||||||
parse_mode="Markdown",
|
parse_mode="Markdown",
|
||||||
reply_markup=menu_builder.get_keyboard("main", user_id=query.from_user.id)
|
reply_markup=menu_builder.get_keyboard("main", user_id=query.from_user.id, state=state)
|
||||||
)
|
)
|
||||||
state.current_menu = "main"
|
state.current_menu = "main"
|
||||||
else:
|
else:
|
||||||
|
|
@ -1443,7 +1445,7 @@ async def menu_callback(update: Update, context: ContextTypes.DEFAULT_TYPE):
|
||||||
f"Бот позволяет безопасно выполнять команды\n"
|
f"Бот позволяет безопасно выполнять команды\n"
|
||||||
f"на вашем сервере через интерфейс Telegram.",
|
f"на вашем сервере через интерфейс Telegram.",
|
||||||
parse_mode="Markdown",
|
parse_mode="Markdown",
|
||||||
reply_markup=menu_builder.get_keyboard("main", user_id=query.from_user.id)
|
reply_markup=menu_builder.get_keyboard("main", user_id=query.from_user.id, state=state)
|
||||||
)
|
)
|
||||||
state.current_menu = "main"
|
state.current_menu = "main"
|
||||||
|
|
||||||
|
|
@ -1461,7 +1463,7 @@ async def menu_callback(update: Update, context: ContextTypes.DEFAULT_TYPE):
|
||||||
f"Режим чата с агентом {action}.\n"
|
f"Режим чата с агентом {action}.\n"
|
||||||
f"Теперь все сообщения будут отправляться в Qwen Code.",
|
f"Теперь все сообщения будут отправляться в Qwen Code.",
|
||||||
parse_mode="Markdown",
|
parse_mode="Markdown",
|
||||||
reply_markup=menu_builder.get_keyboard("main", user_id=query.from_user.id)
|
reply_markup=menu_builder.get_keyboard("main", user_id=query.from_user.id, state=state)
|
||||||
)
|
)
|
||||||
state.current_menu = "main"
|
state.current_menu = "main"
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue