Обновить utils/texts.py
This commit is contained in:
+36
-72
@@ -2,18 +2,16 @@
|
||||
# Все текстовые сообщения бота, отправляемые пользователю
|
||||
|
||||
# =========================================================
|
||||
# GLOBAL CONSTANTS
|
||||
# GLOBAL CONSTANTS & HELPERS
|
||||
# =========================================================
|
||||
|
||||
# --- Main Bot ---
|
||||
# Общее для главного бота
|
||||
UNKNOWN_MAIN_CMD_TEXT = (
|
||||
"⚠️ <b>Неизвестная команда.</b>\n\n"
|
||||
"Пожалуйста, используйте только цифры, соответствующие нужным пунктам меню, и отправьте выбранную цифру мне в сообщении."
|
||||
)
|
||||
|
||||
# --- Emoji Digits ---
|
||||
# Используются для навигации и выбора пунктов меню
|
||||
EMOJI_DIGITS = {
|
||||
"0": "0⃣",
|
||||
"1": "1⃣",
|
||||
@@ -29,7 +27,6 @@ EMOJI_DIGITS = {
|
||||
}
|
||||
|
||||
# --- Footer Templates ---
|
||||
# Шаблоны подвалов сообщений для навигации
|
||||
|
||||
def _footer(emojis: dict) -> str:
|
||||
"""Стандартный футер с кнопками Назад и Меню"""
|
||||
@@ -39,6 +36,17 @@ def _footer_main_only(emojis: dict) -> str:
|
||||
"""Футер только с кнопкой Меню"""
|
||||
return f"\n\n<i>{emojis['0']} — В главное меню</i>"
|
||||
|
||||
# --- Universal System Error Stub ---
|
||||
|
||||
def system_error_text(emojis: dict = EMOJI_DIGITS, show_back: bool = True) -> str:
|
||||
"""Универсальная системная заглушка ошибки для всех модулей бота."""
|
||||
footer = _footer(emojis) if show_back else _footer_main_only(emojis)
|
||||
return (
|
||||
"⚠️ <i>В данный момент выполнить это действие невозможно. "
|
||||
"Информация о проблеме передана ответственным.\n"
|
||||
f"Приносим извинения за доставленные неудобства.</i>{footer}"
|
||||
)
|
||||
|
||||
|
||||
# =========================================================
|
||||
# TRANSCRIPTION BOT
|
||||
@@ -209,14 +217,6 @@ def _photo_unknown(emojis: dict) -> str:
|
||||
f"{emojis['0']} — В главное меню"
|
||||
)
|
||||
|
||||
def _photo_error_handling(emojis: dict) -> str:
|
||||
return (
|
||||
f"⚠️ <i>В данный момент выполнить это действие невозможно. "
|
||||
f"Информация о проблеме передана ответственным.\n"
|
||||
f"Приносим извинения за доставленные неудобства.</i>\n\n"
|
||||
f"{emojis['0']} — В главное меню"
|
||||
)
|
||||
|
||||
def _photo_uploading() -> str:
|
||||
return "⏳ Отправка..."
|
||||
|
||||
@@ -253,7 +253,7 @@ PHOTO_MAIN_MENU_TEXT = _photo_welcome(EMOJI_DIGITS)
|
||||
PHOTO_UNKNOWN_CMD_TEXT = _photo_unknown(EMOJI_DIGITS)
|
||||
|
||||
def photo_error_handling() -> str:
|
||||
return _photo_error_handling(EMOJI_DIGITS)
|
||||
return system_error_text(EMOJI_DIGITS, show_back=False)
|
||||
|
||||
PHOTO_UPLOADING_TEXT = _photo_uploading()
|
||||
|
||||
@@ -319,14 +319,6 @@ def _search_feedback_info(emojis: dict) -> str:
|
||||
f"{emojis['0']} — Выйти в главное меню"
|
||||
)
|
||||
|
||||
def _search_unavailable(emojis: dict) -> str:
|
||||
return (
|
||||
"⚠️ <i>В данный момент выполнить это действие невозможно. "
|
||||
"Информация о проблеме передана ответственным.\n"
|
||||
"Приносим извинения за доставленные неудобства.</i>\n\n"
|
||||
f"<i>{emojis['0']} — В главное меню</i>"
|
||||
)
|
||||
|
||||
# --- Public constants and functions ---
|
||||
|
||||
SEARCH_MAIN_MENU_TEXT = _search_welcome(EMOJI_DIGITS)
|
||||
@@ -345,7 +337,7 @@ def search_feedback_info_text(emojis: dict) -> str:
|
||||
return _search_feedback_info(emojis)
|
||||
|
||||
def search_unavailable_action(emojis: dict) -> str:
|
||||
return _search_unavailable(emojis)
|
||||
return system_error_text(emojis, show_back=False)
|
||||
|
||||
|
||||
# =========================================================
|
||||
@@ -353,8 +345,6 @@ def search_unavailable_action(emojis: dict) -> str:
|
||||
# =========================================================
|
||||
# Модуль Личного Кабинета (финансовые документы, табель и др.)
|
||||
|
||||
# --- Constants ---
|
||||
|
||||
DOC_TYPES = {
|
||||
"1": "Справка о доходах физического лица (2-НДФЛ)",
|
||||
"2": "Справка об удержаниях за ДМС",
|
||||
@@ -367,12 +357,6 @@ DOC_TYPES = {
|
||||
|
||||
# --- Private functions (Internal logic) ---
|
||||
|
||||
def _lk_error_handling(emojis: dict) -> str:
|
||||
return (
|
||||
"⚠️ <i>В данный момент выполнить это действие невозможно. Информация о проблеме передана ответственным. Приносим извинения за доставленные неудобства.</i>\n\n"
|
||||
f"<i>{emojis['9']} — Назад\n{emojis['0']} — В главное меню</i>"
|
||||
)
|
||||
|
||||
def _lk_auth_processing(emojis: dict) -> str:
|
||||
return "⏳ <i>Проверка безопасности... Запрашиваю контакты авторизации...</i>"
|
||||
|
||||
@@ -499,9 +483,8 @@ LK_UNKNOWN_CMD_TEXT = (
|
||||
f"<i>{EMOJI_DIGITS['9']} — Назад\n{EMOJI_DIGITS['0']} — В главное меню</i>"
|
||||
)
|
||||
|
||||
|
||||
def lk_error_handling(emojis: dict) -> str:
|
||||
return _lk_error_handling(emojis)
|
||||
return system_error_text(emojis, show_back=True)
|
||||
|
||||
def lk_auth_processing(emojis: dict) -> str:
|
||||
return _lk_auth_processing(emojis)
|
||||
@@ -592,72 +575,58 @@ def lk_years_menu(current_year: int, emojis: dict) -> str:
|
||||
def _instruct_main_menu(emojis: dict) -> str:
|
||||
return (
|
||||
f"📋 <b>Выберите инструкцию:</b>\n\n"
|
||||
f"{emojis['1']} — 🖥 Trueconf\n"
|
||||
f"{emojis['2']} — 📧 Почта\n\n"
|
||||
f"{emojis['1']} — 🖥 Настройка TrueConf на мобильном устройстве\n"
|
||||
f"{emojis['2']} — 📧 Настройка почты на мобильном устройстве\n\n"
|
||||
f"<i>{emojis['0']} — В главное меню</i>"
|
||||
)
|
||||
|
||||
def _instruct_trueconf(emojis: dict) -> str:
|
||||
"""Статический текст Trueconf — без проверки группы."""
|
||||
return (
|
||||
"🖥 <b>Инструкция по Trueconf</b>\n\n"
|
||||
"🖥 <b>Инструкция по TrueConf</b>\n\n"
|
||||
"Данная функция находится в разработке.\n\n"
|
||||
f"<i>{emojis['9']} — Назад\n{emojis['0']} — В главное меню</i>"
|
||||
)
|
||||
|
||||
|
||||
def _instruct_trueconf_pending(emojis: dict, cn: str) -> str:
|
||||
"""Промпт для запроса доступа к Trueconf (когда нет заявки)."""
|
||||
"""Промпт для запроса доступа к Trueconf (когда заявка ещё не создана)."""
|
||||
return (
|
||||
f"ℹ У вас отсутствует доступ к TrueConf с мобильных устройств.\n\n"
|
||||
f"⚠ <b>У Вас отсутствует доступ к TrueConf с мобильных устройств.</b>\n\n"
|
||||
f"Если Вам требуется доступ, то напишите цифру {emojis['1']}, либо выберите другие пункты меню.\n\n"
|
||||
f"{emojis['1']} — Запросить доступ\n"
|
||||
f"<i>{emojis['9']} — Назад\n{emojis['0']} — В главное меню</i>"
|
||||
)
|
||||
|
||||
|
||||
def _instruct_trueconf_no_ticket(emojis: dict, cn: str) -> str:
|
||||
"""Текст Trueconf когда пользователь не найден в AD."""
|
||||
"""Текст Trueconf, когда пользователь не найден в AD."""
|
||||
return (
|
||||
f"🖥 <b>Инструкция по Trueconf</b>\n\n"
|
||||
f"Пользователь {cn} не найден в Active Directory.\n\n"
|
||||
f"🖥 <b>Инструкция по TrueConf</b>\n\n"
|
||||
f"Пользователь <b>{cn}</b> не найден в Active Directory.\n\n"
|
||||
f"<i>{emojis['9']} — Назад\n{emojis['0']} — В главное меню</i>"
|
||||
)
|
||||
|
||||
|
||||
def _instruct_trueconf_with_ad(emojis: dict, cn: str, ticket_id: str = None) -> str:
|
||||
"""
|
||||
Текст Trueconf с проверкой группы 2FA.
|
||||
cn — CN пользователя из AD.
|
||||
ticket_id — номер созданной заявки в SD.
|
||||
Чистый шаблон сообщения Trueconf:
|
||||
- Если ticket_id передан: показываем статус заявки в ServiceDesk.
|
||||
- Если ticket_id is None: у пользователя есть доступ, выводим подпись к файлу.
|
||||
"""
|
||||
from utils.ad_checker import check_group_membership
|
||||
|
||||
result = check_group_membership(cn, "2FA")
|
||||
|
||||
if not result["found"]:
|
||||
ticket_part = f"\n\n🎫 <b>Заявка #{ticket_id} создана!</b>" if ticket_id else ""
|
||||
return _instruct_trueconf_no_ticket(emojis, cn)
|
||||
|
||||
if result["in_group"]:
|
||||
body = (
|
||||
f"🖥 <b>Инструкция по Trueconf</b>\n\n"
|
||||
if ticket_id:
|
||||
return (
|
||||
f"⚠ <b>У Вас отсутствует доступ к TrueConf с мобильных устройств.</b>\n\n"
|
||||
f"🎫 Заявка #{ticket_id} для настройки создана в ServiceDesk!\n\n"
|
||||
f"После выполнения заявки воспользуйтесь приложенной к этому сообщению инструкцией.\n\n"
|
||||
f"<i>{emojis['9']} — Назад\n{emojis['0']} — В главное меню</i>"
|
||||
)
|
||||
else:
|
||||
body = (
|
||||
f"ℹ У вас отсутствует доступ к TrueConf с мобильных устройств.\n\n"
|
||||
f"🎫 Заявка #{ticket_id} для настройки создана в ServiceDesk!\n\n"
|
||||
f"🔄 После выполнения заявки запросите инструкцию ещё раз.\n\n"
|
||||
return (
|
||||
f"🖥 <b>Инструкция по настройке TrueConf на мобильном устройстве</b>\n\n"
|
||||
f"<i>{emojis['9']} — Назад\n{emojis['0']} — В главное меню</i>"
|
||||
)
|
||||
|
||||
return body
|
||||
|
||||
|
||||
def _instruct_email(emojis: dict) -> str:
|
||||
return (
|
||||
"📧 <b>Инструкция по Почте</b>\n\n"
|
||||
"📧 <b>Инструкция по почте на мобильном устройстве</b>\n\n"
|
||||
"Данная функция находится в разработке.\n\n"
|
||||
f"<i>{emojis['9']} — Назад\n{emojis['0']} — В главное меню</i>"
|
||||
)
|
||||
@@ -671,10 +640,5 @@ INSTRUCT_TRUECONF_PENDING_TEXT = _instruct_trueconf_pending
|
||||
INSTRUCT_TRUECONF_NO_TICKET_TEXT = _instruct_trueconf_no_ticket
|
||||
INSTRUCT_EMAIL_TEXT = _instruct_email(EMOJI_DIGITS)
|
||||
|
||||
# --- Standard error stub for all instruct failures ---
|
||||
INSTRUCT_ERROR_MSG = (
|
||||
"⚠️ <i>В данный момент выполнить это действие невозможно. "
|
||||
"Информация о проблеме передана ответственным.\n"
|
||||
"Приносим извинения за доставленные неудобства.</i>\n\n"
|
||||
f"<i>{EMOJI_DIGITS['9']} — Назад\n{EMOJI_DIGITS['0']} — В главное меню</i>"
|
||||
)
|
||||
# Единая стандартная заглушка системной ошибки для модуля инструкций
|
||||
INSTRUCT_ERROR_MSG = system_error_text(EMOJI_DIGITS, show_back=True)
|
||||
Reference in New Issue
Block a user