Add instruct module with Trueconf and Email guides
This commit is contained in:
@@ -0,0 +1,106 @@
|
||||
from utils.texts import *
|
||||
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__)
|
||||
|
||||
EMOJI_DIGITS = {
|
||||
"0": "0\u20e3",
|
||||
"1": "1\u20e3",
|
||||
"2": "2\u20e3",
|
||||
"3": "3\u20e3",
|
||||
"4": "4\u20e3",
|
||||
"5": "5\u20e3",
|
||||
"6": "6\u20e3",
|
||||
"7": "7\u20e3",
|
||||
"8": "8\u20e3",
|
||||
"9": "9\u20e3",
|
||||
"10": "🔟"
|
||||
}
|
||||
|
||||
INSTRUCT_MAIN_MENU_TEXT = (
|
||||
"📋 <b>Выберите инструкцию:</b>\\n\\n"
|
||||
f"{EMOJI_DIGITS['1']} — 🖥 Trueconf\\n"
|
||||
f"{EMOJI_DIGITS['2']} — 📧 Почта\\n\\n"
|
||||
f"<i>{EMOJI_DIGITS['0']} — В главное меню</i>"
|
||||
)
|
||||
|
||||
INSTRUCT_TRUECONF_TEXT = (
|
||||
"🖥 <b>Инструкция по Trueconf</b>\\n\\n"
|
||||
"Данная функция находится в разработке.\\n\\n"
|
||||
f"<i>{EMOJI_DIGITS['9']} — Назад\\n{EMOJI_DIGITS['0']} — В главное меню</i>"
|
||||
)
|
||||
|
||||
INSTRUCT_EMAIL_TEXT = (
|
||||
"📧 <b>Инструкция по Почте</b>\\n\\n"
|
||||
"Данная функция находится в разработке.\\n\\n"
|
||||
f"<i>{EMOJI_DIGITS['9']} — Назад\\n{EMOJI_DIGITS['0']} — В главное меню</i>"
|
||||
)
|
||||
|
||||
INSTRUCT_UNKNOWN_CMD_TEXT = (
|
||||
"⚠️ <b>Неизвестная команда.</b>\\n\\n"
|
||||
f"Пожалуйста, используйте цифры меню из сообщения выше.{EMOJI_DIGITS['9']} — Назад\\n{EMOJI_DIGITS['0']} — В главное меню"
|
||||
)
|
||||
|
||||
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(INSTRUCT_UNKNOWN_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(INSTRUCT_UNKNOWN_CMD_TEXT, parse_mode="html")
|
||||
Reference in New Issue
Block a user