Spaces:
Running
Running
| from asyncio import sleep | |
| from pyrogram.errors import MessageDeleteForbidden, RPCError | |
| from pyrogram.types import Message | |
| from Powers import SUPPORT_GROUP | |
| from Powers.bot_class import Gojo | |
| from Powers.tr_engine import tlang | |
| from Powers.utils.custom_filters import admin_filter, command | |
| async def purge(c: Gojo, m: Message): | |
| if m.chat.type != "supergroup": | |
| await m.reply_text(tlang(m, "purge.err_basic")) | |
| return | |
| if m.reply_to_message: | |
| message_ids = list(range(m.reply_to_message.message_id, m.message_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(tlang(m, "purge.old_msg_err")) | |
| return | |
| except RPCError as ef: | |
| await m.reply_text( | |
| (tlang(m, "general.some_error")).format( | |
| SUPPORT_GROUP=SUPPORT_GROUP, | |
| ef=ef, | |
| ), | |
| ) | |
| count_del_msg = len(message_ids) | |
| z = await m.reply_text( | |
| (tlang(m, "purge.purge_msg_count")).format( | |
| msg_count=count_del_msg, | |
| ), | |
| ) | |
| await sleep(3) | |
| await z.delete() | |
| return | |
| await m.reply_text("Reply to a message to start purge !") | |
| return | |
| async def spurge(c: Gojo, m: Message): | |
| if m.chat.type != "supergroup": | |
| await m.reply_text(tlang(m, "purge.err_basic")) | |
| return | |
| if m.reply_to_message: | |
| message_ids = list(range(m.reply_to_message.message_id, m.message_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(tlang(m, "purge.old_msg_err")) | |
| return | |
| except RPCError as ef: | |
| await m.reply_text( | |
| (tlang(m, "general.some_error")).format( | |
| SUPPORT_GROUP=SUPPORT_GROUP, | |
| ef=ef, | |
| ), | |
| ) | |
| return | |
| await m.reply_text("Reply to a message to start spurge !") | |
| return | |
| async def del_msg(c: Gojo, m: Message): | |
| if m.chat.type != "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.message_id, | |
| ) | |
| else: | |
| await m.reply_text(tlang(m, "purge.what_del")) | |
| return | |
| __PLUGIN__ = "purges" | |
| __alt_name__ = ["purge", "del", "spurge"] | |