File size: 8,201 Bytes
a8e9b84 |
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 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 |
import os
import asyncio
from pyrogram import Client, filters
from pyrogram.types import Message
from pyrogram import enums
from pyrogram.enums import ChatMemberStatus
from pyrogram.errors import FloodWait
from DragMusic import app
from time import time
import asyncio
from DragMusic.utils.extraction import extract_user
# Define a dictionary to track the last message timestamp for each user
user_last_message_time = {}
user_command_count = {}
# Define the threshold for command spamming (e.g., 20 commands within 60 seconds)
SPAM_THRESHOLD = 2
SPAM_WINDOW_SECONDS = 5
# ------------------------------------------------------------------------------- #
chatQueue = []
stopProcess = False
# ------------------------------------------------------------------------------- #
@app.on_message(filters.command(["zombies", "Deletedaccounts"]))
async def remove(client, message):
global stopProcess
try:
try:
sender = await app.get_chat_member(message.chat.id, message.from_user.id)
has_permissions = sender.privileges
except:
has_permissions = message.sender_chat
if has_permissions:
bot = await app.get_chat_member(message.chat.id, "self")
if bot.status == ChatMemberStatus.MEMBER:
await message.reply(
"➠ | ɪ ɴᴇᴇᴅ ᴀᴅᴍɪɴ ᴘᴇʀᴍɪssɪᴏɴs ᴛᴏ ʀᴇᴍᴏᴠᴇ ᴅᴇʟᴇᴛᴇᴅ ᴀᴄᴄᴏᴜɴᴛs."
)
else:
if len(chatQueue) > 30:
await message.reply(
"➠ | ɪ'ᴍ ᴀʟʀᴇᴀᴅʏ ᴡᴏʀᴋɪɴɢ ᴏɴ ᴍʏ ᴍᴀxɪᴍᴜᴍ ɴᴜᴍʙᴇʀ ᴏғ 30 ᴄʜᴀᴛs ᴀᴛ ᴛʜᴇ ᴍᴏᴍᴇɴᴛ. ᴘʟᴇᴀsᴇ ᴛʀʏ ᴀɢᴀɪɴ sʜᴏʀᴛʟʏ."
)
else:
if message.chat.id in chatQueue:
await message.reply(
"➠ | ᴛʜᴇʀᴇ's ᴀʟʀᴇᴀᴅʏ ᴀɴ ᴏɴɢɪɪɴɢ ᴘʀᴏᴄᴇss ɪɴ ᴛʜɪs ᴄʜᴀᴛ. ᴘʟᴇᴀsᴇ [ /stop ] ᴛᴏ sᴛᴀʀᴛ ᴀ ɴᴇᴡ ᴏɴᴇ."
)
else:
chatQueue.append(message.chat.id)
deletedList = []
async for member in app.get_chat_members(message.chat.id):
if member.user.is_deleted == True:
deletedList.append(member.user)
else:
pass
lenDeletedList = len(deletedList)
if lenDeletedList == 0:
await message.reply("⟳ | ɴᴏ ᴅᴇʟᴇᴛᴇᴅ ᴀᴄᴄᴏᴜɴᴛs ɪɴ ᴛʜɪs ᴄʜᴀᴛ.")
chatQueue.remove(message.chat.id)
else:
k = 0
processTime = lenDeletedList * 1
temp = await app.send_message(
message.chat.id,
f"🧭 | ᴛᴏᴛᴀʟ ᴏғ {lenDeletedList} ᴅᴇʟᴇᴛᴇᴅ ᴀᴄᴄᴏᴜɴᴛs ʜᴀs ʙᴇᴇɴ ᴅᴇᴛᴇᴄᴛᴇᴅ.\n🥀 | ᴇsᴛɪᴍᴀᴛᴇᴅ ᴛɪᴍᴇ: {processTime} sᴇᴄᴏɴᴅs ғʀᴏᴍ ɴᴏᴡ.",
)
if stopProcess:
stopProcess = False
while len(deletedList) > 0 and not stopProcess:
deletedAccount = deletedList.pop(0)
try:
await app.ban_chat_member(
message.chat.id, deletedAccount.id
)
except Exception:
pass
k += 1
await asyncio.sleep(10)
if k == lenDeletedList:
await message.reply(
f"✅ | sᴜᴄᴄᴇssғᴜʟʟʏ ʀᴇᴍᴏᴠᴇᴅ ᴀʟʟ ᴅᴇʟᴇᴛᴇᴅ ᴀᴄᴄɪᴜɴᴛs ғʀᴏᴍ ᴛʜɪs ᴄʜᴀᴛ."
)
await temp.delete()
else:
await message.reply(
f"✅ | sᴜᴄᴄᴇssғᴜʟʟʏ ʀᴇᴍᴏᴠᴇᴅ {k} ᴅᴇʟᴇᴛᴇᴅ ᴀᴄᴄᴏᴜɴᴛs ғʀᴏᴍ ᴛʜɪs ᴄʜᴀᴛ."
)
await temp.delete()
chatQueue.remove(message.chat.id)
else:
await message.reply(
"👮🏻 | sᴏʀʀʏ, ᴏɴʟʏ ᴀᴅᴍɪɴ ᴄᴀɴ ᴇxᴇᴄᴜᴛᴇ ᴛʜɪs ᴄᴏᴍᴍᴀɴᴅ."
)
except FloodWait as e:
await asyncio.sleep(e.value)
# ------------------------------------------------------------------------------- #
@app.on_message(filters.command(["admins", "staff"]))
async def admins(client, message):
try:
adminList = []
ownerList = []
async for admin in app.get_chat_members(
message.chat.id, filter=enums.ChatMembersFilter.ADMINISTRATORS
):
if admin.privileges.is_Dragmous == False:
if admin.user.is_bot == True:
pass
elif admin.status == ChatMemberStatus.OWNER:
ownerList.append(admin.user)
else:
adminList.append(admin.user)
else:
pass
lenAdminList = len(ownerList) + len(adminList)
text2 = f"**ɢʀᴏᴜᴘ sᴛᴀғғ - {message.chat.title}**\n\n"
try:
owner = ownerList[0]
if owner.username == None:
text2 += f"👑 ᴏᴡɴᴇʀ\n└ {owner.mention}\n\n👮🏻 ᴀᴅᴍɪɴs\n"
else:
text2 += f"👑 ᴏᴡɴᴇʀ\n└ @{owner.username}\n\n👮🏻 ᴀᴅᴍɪɴs\n"
except:
text2 += f"👑 ᴏᴡɴᴇʀ\n└ <i>Hidden</i>\n\n👮🏻 ᴀᴅᴍɪɴs\n"
if len(adminList) == 0:
text2 += "└ <i>ᴀᴅᴍɪɴs ᴀʀᴇ ʜɪᴅᴅᴇɴ</i>"
await app.send_message(message.chat.id, text2)
else:
while len(adminList) > 1:
admin = adminList.pop(0)
if admin.username == None:
text2 += f"├ {admin.mention}\n"
else:
text2 += f"├ @{admin.username}\n"
else:
admin = adminList.pop(0)
if admin.username == None:
text2 += f"└ {admin.mention}\n\n"
else:
text2 += f"└ @{admin.username}\n\n"
text2 += f"✅ | ᴛᴏᴛᴀʟ ɴᴜᴍʙᴇʀ ᴏғ ᴀᴅᴍɪɴs: {lenAdminList}"
await app.send_message(message.chat.id, text2)
except FloodWait as e:
await asyncio.sleep(e.value)
# ------------------------------------------------------------------------------- #
@app.on_message(filters.command("bots"))
async def bots(client, message):
try:
botList = []
async for bot in app.get_chat_members(
message.chat.id, filter=enums.ChatMembersFilter.BOTS
):
botList.append(bot.user)
lenBotList = len(botList)
text3 = f"ʙᴏᴛ ʟɪsᴛ - {message.chat.title}\n\n🤖 ʙᴏᴛs\n"
while len(botList) > 1:
bot = botList.pop(0)
text3 += f"├ @{bot.username}\n"
else:
bot = botList.pop(0)
text3 += f" @{bot.username}\n\n"
text3 += f"✅ | ᴛᴏᴛᴀʟ ɴᴜᴍʙᴇʀ ᴏғ ʙᴏᴛs: {lenBotList}"
await app.send_message(message.chat.id, text3)
except FloodWait as e:
await asyncio.sleep(e.value)
# ------------------------------------------------------------------------------- #
|