75 lines
2.3 KiB
Python
75 lines
2.3 KiB
Python
from utils.texts import (
|
|
UNKNOWN_MAIN_CMD_TEXT,
|
|
EMOJI_DIGITS,
|
|
INSTRUCT_MAIN_MENU_TEXT,
|
|
INSTRUCT_TRUECONF_TEXT,
|
|
INSTRUCT_EMAIL_TEXT,
|
|
)
|
|
import logging
|
|
import asyncio
|
|
|
|
from trueconf import Router, Message
|
|
|
|
from utils.states import get_state, set_state, clear_state
|
|
|
|
# 🔌 Импортируем централизованную функцию сбора статистики из main
|
|
from utils.stats_logger import log_menu_stats
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
router = Router()
|
|
|
|
|
|
@router.message()
|
|
async def instruct_router_handler(msg: Message):
|
|
user_id = msg.from_user.id
|
|
|
|
current_state = get_state(user_id)
|
|
|
|
if not msg.text:
|
|
return
|
|
|
|
cmd = msg.text.strip().lower()
|
|
|
|
for raw_num, emoji_num in EMOJI_DIGITS.items():
|
|
if cmd == emoji_num:
|
|
cmd = raw_num
|
|
break
|
|
|
|
if current_state is None:
|
|
from utils.menu import MENU_MAP
|
|
if MENU_MAP.get(cmd) == "INSTRUCT":
|
|
msg.handled = True
|
|
set_state(user_id, "INSTRUCT_MODE")
|
|
await msg.answer(INSTRUCT_MAIN_MENU_TEXT, parse_mode="html")
|
|
return
|
|
return
|
|
|
|
if current_state == "INSTRUCT_MODE":
|
|
msg.handled = True
|
|
if cmd == "0":
|
|
log_menu_stats(user_id, "Инструкции", "Выход в главное меню")
|
|
clear_state(user_id)
|
|
from utils.menu import MENU_TEXT
|
|
await msg.answer(MENU_TEXT, parse_mode="html")
|
|
elif cmd == "1":
|
|
log_menu_stats(user_id, "Инструкции", "Trueconf")
|
|
await msg.answer(INSTRUCT_TRUECONF_TEXT, parse_mode="html")
|
|
elif cmd == "2":
|
|
log_menu_stats(user_id, "Инструкции", "Почта")
|
|
await msg.answer(INSTRUCT_EMAIL_TEXT, parse_mode="html")
|
|
else:
|
|
await msg.answer(UNKNOWN_MAIN_CMD_TEXT, parse_mode="html")
|
|
|
|
elif current_state in ["INSTRUCT_TRUECONF_VIEW", "INSTRUCT_EMAIL_VIEW"]:
|
|
msg.handled = True
|
|
if cmd == "0":
|
|
clear_state(user_id)
|
|
from utils.menu import MENU_TEXT
|
|
await msg.answer(MENU_TEXT, parse_mode="html")
|
|
elif cmd == "9":
|
|
set_state(user_id, "INSTRUCT_MODE")
|
|
await msg.answer(INSTRUCT_MAIN_MENU_TEXT, parse_mode="html")
|
|
else:
|
|
await msg.answer(UNKNOWN_MAIN_CMD_TEXT, parse_mode="html")
|