fix: INSTRUCT_MAIN_MENU_TEXT вызывается без EMOJI_DIGITS аргумента

- Заменено INSTRUCT_MAIN_MENU_TEXT = instruct_main_menu_text
  на INSTRUCT_MAIN_MENU_TEXT = instruct_main_menu_text(EMOJI_DIGITS)
- Функция instruct_main_menu_text(emojis: dict) требует обязательный параметр emojis
- Без вызова функции переменная содержит имя функции, а не строку текста
- TrueConf dispatcher выдаёт "str object is not callable" при попытке вызвать фильтр
- Также исправлено: меню теперь видят пользователи
This commit is contained in:
Денис Кривоченко
2026-07-21 16:02:20 +07:00
parent ca9a97cac5
commit d0d9158994
+7 -31
View File
@@ -14,7 +14,7 @@ from utils.texts import (
) )
from utils.menu import MENU_TEXT from utils.menu import MENU_TEXT
INSTRUCT_MAIN_MENU_TEXT = instruct_main_menu_text INSTRUCT_MAIN_MENU_TEXT = instruct_main_menu_text(EMOJI_DIGITS)
# ======================================== # ========================================
@@ -48,7 +48,7 @@ instruct_sessions = {}
# ОБРАБОТЧИКИ # ОБРАБОТЧИКИ
# ======================================== # ========================================
@router.message("0") @router.message()
async def instruct_main_handler(msg: Message): async def instruct_main_handler(msg: Message):
"""Обработчик главного меню модуля Instruct.""" """Обработчик главного меню модуля Instruct."""
user_id = msg.from_user.id user_id = msg.from_user.id
@@ -57,18 +57,10 @@ async def instruct_main_handler(msg: Message):
return return
# Цифра 0 — возврат в главное меню # Цифра 0 — возврат в главное меню
clear_state(user_id) if msg.text and msg.text.strip() == "0":
setattr(msg, "handled", True) clear_state(user_id)
await msg.answer(MENU_TEXT, parse_mode="html") await msg.answer(MENU_TEXT, parse_mode="html")
instruct_logger.info(f"User {user_id} returned to main menu via 0") instruct_logger.info(f"User {user_id} returned to main menu via 0")
return
@router.message()
async def instruct_main_menu_handler(msg: Message):
"""Обработчик открытия меню инструкций."""
user_id = msg.from_user.id
if get_state(user_id) != "INSTRUCT_MODE":
return return
# Очистка состояния # Очистка состояния
@@ -85,6 +77,7 @@ async def instruct_main_menu_handler(msg: Message):
await msg.answer(instruct_main_menu_text(EMOJI_DIGITS), parse_mode="html") await msg.answer(instruct_main_menu_text(EMOJI_DIGITS), parse_mode="html")
instruct_logger.info(f"Instruct main menu shown for user {user_id}") instruct_logger.info(f"Instruct main menu shown for user {user_id}")
@router.message() @router.message()
async def instruct_tc_handler(msg: Message): async def instruct_tc_handler(msg: Message):
"""Обработчик выбора: Приложение TrueConf.""" """Обработчик выбора: Приложение TrueConf."""
@@ -102,23 +95,6 @@ async def instruct_tc_handler(msg: Message):
await msg.answer(instruct_tc_text(), parse_mode="html") await msg.answer(instruct_tc_text(), parse_mode="html")
instruct_logger.info(f"User {user_id} selected TrueConf instructions") instruct_logger.info(f"User {user_id} selected TrueConf instructions")
@router.message()
async def instruct_back_to_main_handler(msg: Message):
"""Обработчик возврата в главное меню."""
user_id = msg.from_user.id
if get_state(user_id) != "INSTRUCT_MODE":
return
# Очистка состояния
clear_state(user_id)
# Убираем обработанность, чтобы сообщение не дублировалось
setattr(msg, "handled", True)
await msg.answer(MENU_TEXT, parse_mode="html")
instruct_logger.info(f"User {user_id} returned to main menu")
@router.message() @router.message()
async def instruct_email_handler(msg: Message): async def instruct_email_handler(msg: Message):
"""Обработчик выбора: Почта на мобильном устройстве.""" """Обработчик выбора: Почта на мобильном устройстве."""