Spaces:
Running
Running
File size: 3,763 Bytes
7956eb0 1b5719b 7956eb0 1b5719b 7956eb0 711b749 89c3556 7956eb0 effac34 7956eb0 4056428 7956eb0 b002286 7956eb0 1075772 89c3556 7956eb0 b002286 7956eb0 711b749 89c3556 7956eb0 0189974 7956eb0 4056428 7956eb0 b002286 7956eb0 1075772 89c3556 7956eb0 711b749 7956eb0 effac34 7956eb0 89c3556 7956eb0 818d601 d76971a 809532c d76971a 2707517 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
from asyncio import sleep
from pyrogram.enums import ChatType
from pyrogram.errors import MessageDeleteForbidden, RPCError
from pyrogram.types import Message
from Powers.bot_class import Gojo
from Powers.utils.custom_filters import admin_filter, command
@Gojo.on_message(command("purge") & admin_filter)
async def purge(c: Gojo, m: Message):
if m.chat.type != ChatType.SUPERGROUP:
await m.reply_text(text="Cannot purge messages in a basic group")
return
if m.reply_to_message:
message_ids = list(range(m.reply_to_message.id, m.id))
def divide_chunks(l: list, n: int = 100):
for i in range(0, len(l), n):
yield l[i: i + n]
# Dielete messages in chunks of 100 messages
m_list = list(divide_chunks(message_ids))
try:
for plist in m_list:
await c.delete_messages(
chat_id=m.chat.id,
message_ids=plist,
revoke=True,
)
await m.delete()
except MessageDeleteForbidden:
await m.reply_text(
text="Cannot delete all messages. The messages may be too old, I might not have delete rights, or this might not be a supergroup."
)
return
except RPCError as ef:
await m.reply_text(
text=f"""Some error occured, report it using `/bug`
<b>Error:</b> <code>{ef}</code>"""
)
count_del_msg = len(message_ids)
z = await m.reply_text(text=f"Deleted <i>{count_del_msg}</i> messages")
await sleep(3)
await z.delete()
return
await m.reply_text("Reply to a message to start purge !")
return
@Gojo.on_message(command("spurge") & admin_filter)
async def spurge(c: Gojo, m: Message):
if m.chat.type != ChatType.SUPERGROUP:
await m.reply_text(text="Cannot purge messages in a basic group")
return
if m.reply_to_message:
message_ids = list(range(m.reply_to_message.id, m.id))
def divide_chunks(l: list, n: int = 100):
for i in range(0, len(l), n):
yield l[i: i + n]
# Dielete messages in chunks of 100 messages
m_list = list(divide_chunks(message_ids))
try:
for plist in m_list:
await c.delete_messages(
chat_id=m.chat.id,
message_ids=plist,
revoke=True,
)
await m.delete()
except MessageDeleteForbidden:
await m.reply_text(
text="Cannot delete all messages. The messages may be too old, I might not have delete rights, or this might not be a supergroup."
)
return
except RPCError as ef:
await m.reply_text(
text=f"""Some error occured, report it using `/bug`
<b>Error:</b> <code>{ef}</code>"""
)
return
await m.reply_text("Reply to a message to start spurge !")
return
@Gojo.on_message(
command("del") & admin_filter,
)
async def del_msg(c: Gojo, m: Message):
if m.chat.type != ChatType.SUPERGROUP:
return
if m.reply_to_message:
await m.delete()
await c.delete_messages(
chat_id=m.chat.id,
message_ids=m.reply_to_message.id,
)
else:
await m.reply_text(text="What do you wanna delete?")
return
__PLUGIN__ = "purges"
__alt_name__ = ["purge", "del", "spurge"]
__HELP__ = """
**Purge**
• /purge: Deletes messages upto replied message.
• /spurge: Deletes messages upto replied message without a success message.
• /del: Deletes a single message, used as a reply to message."""
|