diff --git a/utils/texts.py b/utils/texts.py
index dfd65ff..cef25de 100644
--- a/utils/texts.py
+++ b/utils/texts.py
@@ -2,18 +2,16 @@
# Все текстовые сообщения бота, отправляемые пользователю
# =========================================================
-# GLOBAL CONSTANTS
+# GLOBAL CONSTANTS & HELPERS
# =========================================================
# --- Main Bot ---
-# Общее для главного бота
UNKNOWN_MAIN_CMD_TEXT = (
"⚠️ Неизвестная команда.\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{emojis['0']} — В главное меню"
+# --- 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 (
+ "⚠️ В данный момент выполнить это действие невозможно. "
+ "Информация о проблеме передана ответственным.\n"
+ f"Приносим извинения за доставленные неудобства.{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"⚠️ В данный момент выполнить это действие невозможно. "
- f"Информация о проблеме передана ответственным.\n"
- f"Приносим извинения за доставленные неудобства.\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 (
- "⚠️ В данный момент выполнить это действие невозможно. "
- "Информация о проблеме передана ответственным.\n"
- "Приносим извинения за доставленные неудобства.\n\n"
- f"{emojis['0']} — В главное меню"
- )
-
# --- 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 (
- "⚠️ В данный момент выполнить это действие невозможно. Информация о проблеме передана ответственным. Приносим извинения за доставленные неудобства.\n\n"
- f"{emojis['9']} — Назад\n{emojis['0']} — В главное меню"
- )
-
def _lk_auth_processing(emojis: dict) -> str:
return "⏳ Проверка безопасности... Запрашиваю контакты авторизации..."
@@ -499,9 +483,8 @@ LK_UNKNOWN_CMD_TEXT = (
f"{EMOJI_DIGITS['9']} — Назад\n{EMOJI_DIGITS['0']} — В главное меню"
)
-
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"📋 Выберите инструкцию:\n\n"
- f"{emojis['1']} — 🖥 Trueconf\n"
- f"{emojis['2']} — 📧 Почта\n\n"
+ f"{emojis['1']} — 🖥 Настройка TrueConf на мобильном устройстве\n"
+ f"{emojis['2']} — 📧 Настройка почты на мобильном устройстве\n\n"
f"{emojis['0']} — В главное меню"
)
def _instruct_trueconf(emojis: dict) -> str:
"""Статический текст Trueconf — без проверки группы."""
return (
- "🖥 Инструкция по Trueconf\n\n"
+ "🖥 Инструкция по TrueConf\n\n"
"Данная функция находится в разработке.\n\n"
f"{emojis['9']} — Назад\n{emojis['0']} — В главное меню"
)
-
def _instruct_trueconf_pending(emojis: dict, cn: str) -> str:
- """Промпт для запроса доступа к Trueconf (когда нет заявки)."""
+ """Промпт для запроса доступа к Trueconf (когда заявка ещё не создана)."""
return (
- f"ℹ У вас отсутствует доступ к TrueConf с мобильных устройств.\n\n"
+ f"⚠ У Вас отсутствует доступ к TrueConf с мобильных устройств.\n\n"
f"Если Вам требуется доступ, то напишите цифру {emojis['1']}, либо выберите другие пункты меню.\n\n"
f"{emojis['1']} — Запросить доступ\n"
f"{emojis['9']} — Назад\n{emojis['0']} — В главное меню"
)
-
def _instruct_trueconf_no_ticket(emojis: dict, cn: str) -> str:
- """Текст Trueconf когда пользователь не найден в AD."""
+ """Текст Trueconf, когда пользователь не найден в AD."""
return (
- f"🖥 Инструкция по Trueconf\n\n"
- f"Пользователь {cn} не найден в Active Directory.\n\n"
+ f"🖥 Инструкция по TrueConf\n\n"
+ f"Пользователь {cn} не найден в Active Directory.\n\n"
f"{emojis['9']} — Назад\n{emojis['0']} — В главное меню"
)
-
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🎫 Заявка #{ticket_id} создана!" if ticket_id else ""
- return _instruct_trueconf_no_ticket(emojis, cn)
-
- if result["in_group"]:
- body = (
- f"🖥 Инструкция по Trueconf\n\n"
+ if ticket_id:
+ return (
+ f"⚠ У Вас отсутствует доступ к TrueConf с мобильных устройств.\n\n"
+ f"🎫 Заявка #{ticket_id} для настройки создана в ServiceDesk!\n\n"
+ f"После выполнения заявки воспользуйтесь приложенной к этому сообщению инструкцией.\n\n"
f"{emojis['9']} — Назад\n{emojis['0']} — В главное меню"
)
else:
- body = (
- f"ℹ У вас отсутствует доступ к TrueConf с мобильных устройств.\n\n"
- f"🎫 Заявка #{ticket_id} для настройки создана в ServiceDesk!\n\n"
- f"🔄 После выполнения заявки запросите инструкцию ещё раз.\n\n"
+ return (
+ f"🖥 Инструкция по настройке TrueConf на мобильном устройстве\n\n"
f"{emojis['9']} — Назад\n{emojis['0']} — В главное меню"
)
- return body
-
-
def _instruct_email(emojis: dict) -> str:
return (
- "📧 Инструкция по Почте\n\n"
+ "📧 Инструкция по почте на мобильном устройстве\n\n"
"Данная функция находится в разработке.\n\n"
f"{emojis['9']} — Назад\n{emojis['0']} — В главное меню"
)
@@ -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 = (
- "⚠️ В данный момент выполнить это действие невозможно. "
- "Информация о проблеме передана ответственным.\n"
- "Приносим извинения за доставленные неудобства.\n\n"
- f"{EMOJI_DIGITS['9']} — Назад\n{EMOJI_DIGITS['0']} — В главное меню"
-)
\ No newline at end of file
+# Единая стандартная заглушка системной ошибки для модуля инструкций
+INSTRUCT_ERROR_MSG = system_error_text(EMOJI_DIGITS, show_back=True)
\ No newline at end of file