54 lines
1.5 KiB
Python
54 lines
1.5 KiB
Python
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.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.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
|