Commit e8c37bf

benny-dou <60535774+benny-dou@users.noreply.github.com>
2025-07-17 10:04:54
chore: improve delete telegram message functionality
1 parent 874d49e
Changed files (4)
src/asr/voice_recognition.py
@@ -1,6 +1,5 @@
 #!/usr/bin/env python
 # -*- coding: utf-8 -*-
-import contextlib
 import io
 import re
 from pathlib import Path
@@ -21,7 +20,7 @@ from config import CAPTION_LENGTH, PREFIX, TEXT_LENGTH
 from messages.parser import parse_msg
 from messages.progress import modify_progress
 from messages.sender import send2tg
-from messages.utils import blockquote, count_without_entities, equal_prefix, get_reply_to, startswith_prefix
+from messages.utils import blockquote, count_without_entities, delete_message, equal_prefix, get_reply_to, startswith_prefix
 from multimedia import convert_to_audio, parse_media_info
 from publish import publish_telegraph
 from utils import rand_string, to_int
@@ -171,10 +170,9 @@ async def voice_to_text(
                 )
         await modify_progress(del_status=True, **kwargs)
 
-    with contextlib.suppress(Exception):
-        [await modify_progress(msg, del_status=True) for msg in res.get("sent_messages", [])]
-        if this_info["mtype"] == "text":
-            await message.delete()
+    [await delete_message(msg) for msg in res.get("sent_messages", [])]
+    if this_info["mtype"] == "text":
+        await delete_message(message)
 
 
 async def asr_file(
src/messages/progress.py
@@ -9,7 +9,7 @@ from pyrogram.errors import FloodWait, MessageNotModified
 from pyrogram.types import Message
 
 from config import TEXT_LENGTH, cache
-from messages.utils import smart_split
+from messages.utils import delete_message, smart_split
 
 
 async def modify_progress(
@@ -43,12 +43,12 @@ async def modify_progress(
         message = kwargs.get("progress")
     if not isinstance(message, Message):
         return
+    if del_status:
+        logger.info("Deleting progress message")
+        await asyncio.sleep(del_delay)
+        await delete_message(message)
+        return
     try:
-        if del_status:
-            logger.info("Deleting progress message")
-            await asyncio.sleep(del_delay)
-            await message.delete()
-            return
         if not text:
             return
         if cache.get("modify_progress"):  # DO NOT update too frequently
src/messages/utils.py
@@ -228,3 +228,10 @@ async def set_reaction(client: Client, message: Message, reaction: str | list[st
             await client.set_reaction(message.chat.id, message.id, reaction=emojis)  # type: ignore
         else:
             await client.set_reaction(message.chat.id, message.id)
+
+
+async def delete_message(message: Message):
+    if not isinstance(message, Message):
+        return
+    with contextlib.suppress(Exception):
+        await message.delete()
src/others/favorite.py
@@ -1,6 +1,5 @@
 #!/usr/bin/env python
 # -*- coding: utf-8 -*-
-import contextlib
 import re
 
 from loguru import logger
@@ -11,7 +10,7 @@ from config import DB, FAVORITE
 from database.r2 import get_cf_r2, set_cf_r2
 from messages.parser import parse_msg
 from messages.sender import send2tg
-from messages.utils import equal_prefix, set_reaction, startswith_prefix
+from messages.utils import delete_message, equal_prefix, set_reaction, startswith_prefix
 from utils import slim_cid, strings_list, to_int
 
 HELP = f"""⭐️**收藏消息**
@@ -104,9 +103,8 @@ async def save_favorite(client: Client, message: Message, **kwargs):
             await set_reaction(client, message, reaction="💔")
             return
         logger.success(f"【{key}】已保存到收藏")
-    with contextlib.suppress(Exception):
-        await set_reaction(client, message, reaction="✍️")
-        await message.delete()
+    await set_reaction(client, message, reaction="✍️")
+    await delete_message(message)
 
 
 async def send_favorite(client: Client, message: Message, **kwargs):
@@ -156,5 +154,4 @@ async def send_favorite(client: Client, message: Message, **kwargs):
         await set_reaction(client, message)
     else:
         await set_reaction(client, message, reaction="💔")
-    with contextlib.suppress(Exception):
-        await message.delete()
+    await delete_message(message)