From 90b4d554bbd9e7cdd7a2481924efabe01df888bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=B5=D0=BD=D0=B8=D1=81=20=D0=9A=D1=80=D0=B8=D0=B2?= =?UTF-8?q?=D0=BE=D1=87=D0=B5=D0=BD=D0=BA=D0=BE?= Date: Thu, 30 Jul 2026 13:51:33 +0700 Subject: [PATCH] feat: email instruction checks AD mail attribute and shows available/unavailable message --- instruct/handlers.py | 15 ++++++++++++--- utils/texts.py | 21 +++++++++++++++++++-- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/instruct/handlers.py b/instruct/handlers.py index 772c7ff..2041e62 100644 --- a/instruct/handlers.py +++ b/instruct/handlers.py @@ -18,7 +18,8 @@ from utils.texts import ( INSTRUCT_TRUECONF_TEXT, INSTRUCT_TRUECONF_WITH_AD, INSTRUCT_TRUECONF_PENDING_TEXT, - INSTRUCT_EMAIL_TEXT, + INSTRUCT_EMAIL_AVAILABLE, + INSTRUCT_EMAIL_UNAVAILABLE, INSTRUCT_ERROR_MSG, ) from utils.states import get_state, set_state, clear_state @@ -427,8 +428,16 @@ async def instruct_router_handler(msg: Message): await msg.answer(text, parse_mode="html") elif cmd == "2": log_menu_stats(user_id, "Инструкции", "Почта") - set_state(user_id, "INSTRUCT_EMAIL_VIEW") - await msg.answer(INSTRUCT_EMAIL_TEXT, parse_mode="html") + cn = get_user_cn(user_id) + if cn is None: + cn = user_id + ad_info = get_ad_user_info(user_id) + mail = ad_info.get("mail") if ad_info else None + if mail: + text = INSTRUCT_EMAIL_AVAILABLE(EMOJI_DIGITS, cn, mail) + else: + text = INSTRUCT_EMAIL_UNAVAILABLE(EMOJI_DIGITS, cn) + await msg.answer(text, parse_mode="html") else: await msg.answer(UNKNOWN_MAIN_CMD_TEXT, parse_mode="html") diff --git a/utils/texts.py b/utils/texts.py index cef25de..ed2dca8 100644 --- a/utils/texts.py +++ b/utils/texts.py @@ -624,7 +624,23 @@ def _instruct_trueconf_with_ad(emojis: dict, cn: str, ticket_id: str = None) -> f"{emojis['9']} — Назад\n{emojis['0']} — В главное меню" ) -def _instruct_email(emojis: dict) -> str: + +def _instruct_email_available(emojis: dict, cn: str, mail: str) -> str: + """Текст когда почта доступна.""" + return ( + f"📧 Почта доступна, {cn}\n\n" + f"Ваш email в Active Directory: {mail}\n\n" + f"{emojis['9']} — Назад\n{emojis['0']} — В главное меню" + ) + +def _instruct_email_unavailable(emojis: dict, cn: str) -> str: + """Текст когда почта недоступна.""" + return ( + f"⚠️ Почта недоступна, {cn}\n\n" + "У вас нет почтового адреса в Active Directory.\n\n" + f"{emojis['9']} — Назад\n{emojis['0']} — В главное меню" + ) + return ( "📧 Инструкция по почте на мобильном устройстве\n\n" "Данная функция находится в разработке.\n\n" @@ -638,7 +654,8 @@ INSTRUCT_TRUECONF_TEXT = _instruct_trueconf(EMOJI_DIGITS) INSTRUCT_TRUECONF_WITH_AD = _instruct_trueconf_with_ad INSTRUCT_TRUECONF_PENDING_TEXT = _instruct_trueconf_pending INSTRUCT_TRUECONF_NO_TICKET_TEXT = _instruct_trueconf_no_ticket -INSTRUCT_EMAIL_TEXT = _instruct_email(EMOJI_DIGITS) +INSTRUCT_EMAIL_AVAILABLE = _instruct_email_available +INSTRUCT_EMAIL_UNAVAILABLE = _instruct_email_unavailable # Единая стандартная заглушка системной ошибки для модуля инструкций INSTRUCT_ERROR_MSG = system_error_text(EMOJI_DIGITS, show_back=True) \ No newline at end of file