feat: email instruction checks AD mail attribute and shows available/unavailable message

This commit is contained in:
Денис Кривоченко
2026-07-30 13:51:33 +07:00
parent 1585206707
commit 90b4d554bb
2 changed files with 31 additions and 5 deletions
+12 -3
View File
@@ -18,7 +18,8 @@ from utils.texts import (
INSTRUCT_TRUECONF_TEXT, INSTRUCT_TRUECONF_TEXT,
INSTRUCT_TRUECONF_WITH_AD, INSTRUCT_TRUECONF_WITH_AD,
INSTRUCT_TRUECONF_PENDING_TEXT, INSTRUCT_TRUECONF_PENDING_TEXT,
INSTRUCT_EMAIL_TEXT, INSTRUCT_EMAIL_AVAILABLE,
INSTRUCT_EMAIL_UNAVAILABLE,
INSTRUCT_ERROR_MSG, INSTRUCT_ERROR_MSG,
) )
from utils.states import get_state, set_state, clear_state 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") await msg.answer(text, parse_mode="html")
elif cmd == "2": elif cmd == "2":
log_menu_stats(user_id, "Инструкции", "Почта") log_menu_stats(user_id, "Инструкции", "Почта")
set_state(user_id, "INSTRUCT_EMAIL_VIEW") cn = get_user_cn(user_id)
await msg.answer(INSTRUCT_EMAIL_TEXT, parse_mode="html") 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: else:
await msg.answer(UNKNOWN_MAIN_CMD_TEXT, parse_mode="html") await msg.answer(UNKNOWN_MAIN_CMD_TEXT, parse_mode="html")
+19 -2
View File
@@ -624,7 +624,23 @@ def _instruct_trueconf_with_ad(emojis: dict, cn: str, ticket_id: str = None) ->
f"<i>{emojis['9']} — Назад\n{emojis['0']} — В главное меню</i>" f"<i>{emojis['9']} — Назад\n{emojis['0']} — В главное меню</i>"
) )
def _instruct_email(emojis: dict) -> str:
def _instruct_email_available(emojis: dict, cn: str, mail: str) -> str:
"""Текст когда почта доступна."""
return (
f"📧 <b>Почта доступна, {cn}</b>\n\n"
f"Ваш email в Active Directory: <code>{mail}</code>\n\n"
f"<i>{emojis['9']} — Назад\n{emojis['0']} — В главное меню</i>"
)
def _instruct_email_unavailable(emojis: dict, cn: str) -> str:
"""Текст когда почта недоступна."""
return (
f"⚠️ <b>Почта недоступна, {cn}</b>\n\n"
"У вас нет почтового адреса в Active Directory.\n\n"
f"<i>{emojis['9']} — Назад\n{emojis['0']} — В главное меню</i>"
)
return ( return (
"📧 <b>Инструкция по почте на мобильном устройстве</b>\n\n" "📧 <b>Инструкция по почте на мобильном устройстве</b>\n\n"
"Данная функция находится в разработке.\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_WITH_AD = _instruct_trueconf_with_ad
INSTRUCT_TRUECONF_PENDING_TEXT = _instruct_trueconf_pending INSTRUCT_TRUECONF_PENDING_TEXT = _instruct_trueconf_pending
INSTRUCT_TRUECONF_NO_TICKET_TEXT = _instruct_trueconf_no_ticket 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) INSTRUCT_ERROR_MSG = system_error_text(EMOJI_DIGITS, show_back=True)