mirror of
https://github.com/TeamPGM/PagerMaid_Plugins_Pyro.git
synced 2024-11-25 07:06:27 +00:00
47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
|
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()
|