osnova-api-alert/routers/tg_send.py

35 lines
1002 B
Python
Raw Normal View History

2024-10-08 14:33:15 +00:00
from fastapi import APIRouter, Depends
import logging as log
2024-10-09 11:26:34 +00:00
from schemas import TelegramMessageToDashboard
2024-10-08 14:33:15 +00:00
from auth import verify_token_admin
2024-10-09 11:26:34 +00:00
from telegram import send_message_to_dashboard, del_message_from_dashboard
2024-10-09 11:46:51 +00:00
from redis_db import set_value, pop_value
2024-10-09 14:21:19 +00:00
from config import conf
import re
2024-10-08 14:33:15 +00:00
router = APIRouter()
@router.post("/send")
async def send_message(
2024-10-09 11:26:34 +00:00
message: TelegramMessageToDashboard,
2024-10-08 14:33:15 +00:00
token: str = Depends(verify_token_admin),
):
2024-10-09 14:21:19 +00:00
match = re.search(conf.tg.close_alert_pattern, message.text)
log.info(f"match: {match}")
if match:
2024-10-09 11:46:51 +00:00
msg_id = await pop_value(message.problem_id)
2024-10-09 14:21:19 +00:00
if msg_id:
msg_id = int(msg_id.decode("utf-8"))
await del_message_from_dashboard(message_id=msg_id)
2024-10-09 11:26:34 +00:00
return
result = await send_message_to_dashboard(text=message.text)
if result["status"] == 200:
log.info(f"Message sent to dashboard: {message.text}")
await set_value(message.problem_id, result["msg_id"])
2024-10-08 14:33:15 +00:00
return