from fastapi import APIRouter, Depends import logging as log from schemas import TelegramMessageToDashboard, TelegramMessageToNetwork from auth import verify_token_admin from telegram import ( send_message_to_dashboard, del_message_from_dashboard, send_message_to_net_chat, ) from redis_db import set_value, pop_value from config import conf import re router = APIRouter() @router.post("/send") async def send_message( message: TelegramMessageToDashboard, token: str = Depends(verify_token_admin), ): match = re.search(conf.tg.close_alert_pattern, message.text) log.info(f"match: {match}") if match: msg_id = await pop_value(message.problem_id) if msg_id: msg_id = int(msg_id.decode("utf-8")) await del_message_from_dashboard(message_id=msg_id) return result = await send_message_to_dashboard( text=message.subject + "\n\n" + message.text ) if result["status"] == 200: log.info(f"Message sent to dashboard: {message.text}") await set_value(message.problem_id, result["msg_id"]) else: log.warning(f"Failed to send message code: {result['status']}") return @router.post("/send-net-service") async def send_message_net_service( message: TelegramMessageToNetwork, token: str = Depends(verify_token_admin), ): result = await send_message_to_net_chat( text=message.subject + "\n\n" + message.text ) if result["status"] == 200: log.info(f"Message sent to network chat: {message.text}") else: log.warning(f"Failed to send message code: {result['status']}") return