From 93e85f790e8622c5fccc526fb019dc514859ab69 Mon Sep 17 00:00:00 2001 From: sergey Date: Tue, 15 Apr 2025 14:58:09 +0300 Subject: [PATCH] add edit message --- config/.env-template | 1 + config/config.py | 1 + main.py | 16 +++++++++++++--- telegram/__init__.py | 2 ++ telegram/message.py | 27 ++++++++++++++++++++++++++- 5 files changed, 43 insertions(+), 4 deletions(-) diff --git a/config/.env-template b/config/.env-template index cfdacf2..9fe2a76 100755 --- a/config/.env-template +++ b/config/.env-template @@ -14,6 +14,7 @@ CFG__ZABBIX__ALERT_TEXT_DOWN=Zabbix service DOWN CFG__TGBOT__TOKEN=string CFG__TGBOT__CHAT_ID=00000000 CFG__TGBOT__TREAD_ID=0 +CFG__TGBOT__DELETE_MSG=string CFG__REDIS__HOST=localhost CFG__REDIS__PORT=6379 diff --git a/config/config.py b/config/config.py index 793e476..e0a8dfa 100755 --- a/config/config.py +++ b/config/config.py @@ -42,6 +42,7 @@ class TelegramBotConfig(BaseModel): token: str chat_id: int tread_id: int + delete_msg: str class ZabbixConfig(BaseModel): diff --git a/main.py b/main.py index adeca18..5b0805b 100644 --- a/main.py +++ b/main.py @@ -8,7 +8,13 @@ from redis_db import ( del_value, ) import asyncio -from telegram import del_message, send_message, start_bot, send_zabbix_api_alert +from telegram import ( + del_message, + send_message, + start_bot, + send_zabbix_api_alert, + edit_message, +) async def dashboard(): @@ -59,8 +65,12 @@ async def dashboard(): if resp["status"] == 200: await del_value(closed_alert) if resp["status"] == 400: - log.warning(f"remove olg message {msg_id} from reddis") - await del_value(closed_alert) + resp = await edit_message(int(msg_id), conf.tgbot.delete_msg) + if resp["status"] == 200: + await del_value(closed_alert) + if resp["status"] == 400: + log.warning(f"remove olg message {msg_id} from reddis") + await del_value(closed_alert) async def dashboard_loop(): diff --git a/telegram/__init__.py b/telegram/__init__.py index 0215468..69c669c 100644 --- a/telegram/__init__.py +++ b/telegram/__init__.py @@ -1,5 +1,6 @@ from .message import ( send_message, + edit_message, del_message, send_zabbix_api_alert, ) @@ -7,6 +8,7 @@ from .bot import start_bot __all__ = [ "send_message", + "edit_message", "del_message", "start_bot", "send_zabbix_api_alert", diff --git a/telegram/message.py b/telegram/message.py index 7251572..e95ed88 100644 --- a/telegram/message.py +++ b/telegram/message.py @@ -46,7 +46,32 @@ async def send_message(message: str, event_id: int) -> dict: async def edit_message(message_id: int, message: str) -> dict: - pass + url = f"https://api.telegram.org/bot{conf.tgbot.token}/editMessageText" + async with aiohttp.ClientSession() as session: + try: + async with session.post( + url, + json={ + "chat_id": conf.tgbot.chat_id, + "message_id": message_id, + "text": message, + }, + ) as response: + if response.status == 200: + log.info(f"Message ID {message_id} edited") + return { + "status": response.status, + } + else: + log.warning( + f"Message ID {message_id} NOT edit. Response status: {response.status}" + ) + return { + "status": response.status, + } + except Exception as e: + log.warning(f"Exception: {e}") + return {"status": e} async def del_message(