# 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}")