diff --git a/clear_sticker/DES.md b/clear_sticker/DES.md new file mode 100644 index 0000000..b25892f --- /dev/null +++ b/clear_sticker/DES.md @@ -0,0 +1,7 @@ +clear_sticker + +# 清理群组中的贴纸消息 + +`,clear_sticker 99999999` + +清理所有贴纸 diff --git a/clear_sticker/main.py b/clear_sticker/main.py new file mode 100644 index 0000000..9b9222e --- /dev/null +++ b/clear_sticker/main.py @@ -0,0 +1,46 @@ +import contextlib +from pagermaid.enums import Client, Message +from pagermaid.listener import listener + + +async def clear_sticker_func(bot: Client, cid: int, count: int): + real_del = 0 + msgs = [] + async for message in bot.get_chat_history(cid): + if message.sticker: + msgs.append(message.id) + real_del += 1 + if real_del >= count: + break + if len(msgs) >= 100: + with contextlib.suppress(Exception): + await bot.delete_messages(cid, msgs) + msgs.clear() + if len(msgs) > 0: + with contextlib.suppress(Exception): + await bot.delete_messages(cid, msgs) + return real_del + + +@listener( + command="clear_sticker", + description="清理群组中的贴纸消息。", + parameters="[需要清理的贴纸数]", + groups_only=True, +) +async def clear_sticker(bot: Client, message: Message): + count = message.obtain_message() + if not count: + await message.edit("请输入需要清理的贴纸数,例如 99999999") + return + try: + count = int(count) + if count < 1: + raise ValueError + except ValueError: + await message.edit("请输入需要清理的贴纸数,例如 99999999") + return + msg = await message.edit("正在清理贴纸消息...") + real_count = await clear_sticker_func(bot, message.chat.id, count) + await msg.edit(f"已清理 {real_count} 条贴纸消息。") + await msg.delay_delete()