# composer.py import time from typing import Optional, Tuple from app.bot.utils.tg_escape_chars import escape_telegram_chars # или твоя функция, если кастомная def compose_telegram_message(data: dict) -> Tuple[str, Optional[str]]: """ Формирует сообщение для Telegram и возвращает его вместе со ссылкой (если есть). Args: data (dict): сообщение из очереди Returns: Tuple[str, Optional[str]]: текст сообщения и ссылка для кнопки (если есть) """ try: priority_map = { 'High': '⚠️', 'Disaster': '⛔️' } priority = priority_map.get(data.get('severity', ''), '') msg = escape_telegram_chars(data.get('msg', '')) host = escape_telegram_chars(data.get('host', '')) ip = escape_telegram_chars(data.get('ip', '')) severity = escape_telegram_chars(data.get('severity', '')) status = data.get('status', '').upper() timestamp = int(data.get('date_reception', 0)) time_str = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(timestamp)) if status == "PROBLEM": message = ( f"{priority} {host} ({ip})\n" f"Описание: {msg}\n" f"Критичность: {severity}\n" f"Время возникновения: {time_str} Мск\n" ) else: message = ( f"✅ {host} ({ip})\n" f"Описание: {msg}\n" f"Критичность: {severity}\n" f"Проблема устранена!\n" f"Время устранения: {time_str} Мск\n" ) link = data.get("link") return message, link except KeyError as e: raise ValueError(f"Missing key in data: {e}")