PagerMaid_Plugins/da.py
2021-08-16 22:32:42 +08:00

48 lines
1.6 KiB
Python

from asyncio import sleep
from pagermaid import log
from pagermaid.listener import listener
from pagermaid.utils import alias_command
from telethon.errors import PeerFloodError
@listener(is_plugin=True, outgoing=True, command=alias_command("da"),
description="以此命令删除所有消息。(非群组管理员只删除自己的消息)",
parameters="<text>")
async def da(context):
if len(context.parameter) > 2 or len(context.parameter) == 0:
await context.edit("\n呜呜呜,请执行 `-da true` 来删除所有消息。")
return
if context.parameter[0] != "true":
await context.edit("\n呜呜呜,请执行 `-da true` 来删除所有消息。")
return
await context.edit('正在删除所有消息 . . .')
input_chat = await context.get_input_chat()
messages = []
count = 0
async for message in context.client.iter_messages(input_chat, min_id=1):
messages.append(message)
count += 1
messages.append(1)
if len(messages) == 100:
await context.client.delete_messages(input_chat, messages)
messages = []
if messages:
await context.client.delete_messages(input_chat, messages)
await log(f"批量删除了 {str(count)} 条消息。")
try:
notification = await send_prune_notify(context, count)
except PeerFloodError:
pass
await sleep(.5)
await notification.delete()
async def send_prune_notify(context, count):
return await context.client.send_message(
context.chat_id,
"批量删除了 "
+ str(count)
+ " 条消息。"
)