Commit c4e977a
Changed files (2)
src
messages
others
src/messages/utils.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
-
+import contextlib
import re
from loguru import logger
@@ -8,7 +8,7 @@ from pyrogram.client import Client
from pyrogram.enums import ParseMode
from pyrogram.parser.markdown import BLOCKQUOTE_EXPANDABLE_DELIM, BLOCKQUOTE_EXPANDABLE_END_DELIM
from pyrogram.parser.parser import Parser
-from pyrogram.types import Message, ReplyParameters
+from pyrogram.types import Message, ReactionTypeEmoji, ReplyParameters
from config import TEXT_LENGTH
from utils import myself, readable_size, to_int
@@ -219,3 +219,12 @@ async def sent_from_me(client: Client, message: Message) -> bool:
logger.error(e)
return False
return me.id == uid
+
+
+async def set_reaction(client: Client, message: Message, reaction: str | list[str] = ""):
+ with contextlib.suppress(Exception):
+ if reaction:
+ emojis = [ReactionTypeEmoji(emoji=reaction)] if isinstance(reaction, str) else [ReactionTypeEmoji(emoji=x) for x in reaction]
+ await client.set_reaction(message.chat.id, message.id, reaction=emojis) # type: ignore
+ else:
+ await client.set_reaction(message.chat.id, message.id)
src/others/favorite.py
@@ -10,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, startswith_prefix
+from messages.utils import equal_prefix, set_reaction, startswith_prefix
from utils import strings_list, to_int
HELP = f"""⭐️**收藏消息**
@@ -42,6 +42,7 @@ async def save_favorite(client: Client, message: Message, **kwargs):
await message.reply("【保存收藏】功能缺失必要参数设置", quote=True)
return
+ await set_reaction(client, message, reaction="👌")
keyword = info["text"].removeprefix(FAVORITE.SAVE_PREFIX).strip()
is_force_save = keyword.startswith(("!", "!")) # noqa: RUF001
keyword = keyword.removeprefix("!").removeprefix("!") # noqa: RUF001
@@ -80,9 +81,11 @@ async def save_favorite(client: Client, message: Message, **kwargs):
for key in keywords:
if not await set_cf_r2(FAVORITE.R2_PREFIX + key, save_info, silent=True):
logger.error(f"保存【{key}】到收藏失败")
+ await set_reaction(client, message, reaction="💔")
return
logger.success(f"【{key}】已保存到收藏")
with contextlib.suppress(Exception):
+ await set_reaction(client, message, reaction="✍️")
await message.delete()
@@ -109,23 +112,29 @@ async def send_favorite(client: Client, message: Message, **kwargs):
if not keyword:
return
+ await set_reaction(client, message, reaction="👌")
save_key = f"{FAVORITE.R2_PREFIX}{keyword}"
# check if key is existed
save_info = await get_cf_r2(save_key)
if not save_info:
await send2tg(client, message, texts=f"【{keyword}】不存在", **kwargs)
+ await set_reaction(client, message, reaction="💔")
return
reply_message_id = message.reply_to_message.id if message.reply_to_message else None
reply = ReplyParameters(message_id=reply_message_id) # type: ignore
if use_forward:
if save_info.get("media_group_id"):
messages = await client.get_media_group(save_info["cid"], save_info["mid"])
- await client.forward_messages(chat_id=info["cid"], from_chat_id=save_info["cid"], message_ids=[m.id for m in messages])
+ succ = await client.forward_messages(chat_id=info["cid"], from_chat_id=save_info["cid"], message_ids=[m.id for m in messages])
else:
- await client.forward_messages(chat_id=info["cid"], from_chat_id=save_info["cid"], message_ids=save_info["mid"])
+ succ = await client.forward_messages(chat_id=info["cid"], from_chat_id=save_info["cid"], message_ids=save_info["mid"])
elif save_info.get("media_group_id"):
- await client.copy_media_group(chat_id=info["cid"], from_chat_id=save_info["cid"], message_id=save_info["mid"], reply_parameters=reply)
+ succ = await client.copy_media_group(chat_id=info["cid"], from_chat_id=save_info["cid"], message_id=save_info["mid"], reply_parameters=reply)
else:
- await client.copy_message(chat_id=info["cid"], from_chat_id=save_info["cid"], message_id=save_info["mid"], reply_parameters=reply)
+ succ = await client.copy_message(chat_id=info["cid"], from_chat_id=save_info["cid"], message_id=save_info["mid"], reply_parameters=reply)
+ if isinstance(succ, Message) or (isinstance(succ, list) and all(isinstance(s, Message) for s in succ)):
+ await set_reaction(client, message)
+ else:
+ await set_reaction(client, message, reaction="💔")
with contextlib.suppress(Exception):
await message.delete()