Spaces:
Runtime error
Runtime error
import asyncio | |
from pyrogram import Client, filters | |
from pyrogram.types import ChatPermissions, ChatPrivileges, Message | |
from Hellbot.core import LOGS | |
from . import HelpMenu, custom_handler, db, group_only, handler, hellbot, on_message | |
async def promote(client: Client, message: Message): | |
if len(message.command) < 2 and not message.reply_to_message: | |
return await hellbot.delete( | |
message, "ππΎπΎπ½ πΊ πππΎπππΊππΎ/ππ½ ππ ππΎππ π ππ πΊ πππΎπ ππ πππππππΎ πππΎπ!" | |
) | |
if message.reply_to_message: | |
user = message.reply_to_message.from_user | |
title = await hellbot.input(message) | |
else: | |
user = await client.get_users(message.command[1]) | |
title = (await hellbot.input(message)).split(" ", 1)[1].strip() or "" | |
try: | |
privileges = ChatPrivileges( | |
can_manage_chat=True, | |
can_delete_messages=True, | |
can_manage_video_chats=True, | |
can_restrict_members=False, | |
can_promote_members=False, | |
can_change_info=False, | |
can_invite_users=True, | |
can_pin_messages=True, | |
is_anonymous=False, | |
) | |
await message.chat.promote_member(user.id, privileges) | |
await client.set_administrator_title(message.chat.id, user.id, title) | |
except Exception as e: | |
return await hellbot.error(message, e) | |
await hellbot.delete(message, f"**π« π―ππππππΎπ½ {user.mention} πππΌπΌπΎπππΏππ π π!**") | |
await hellbot.check_and_log( | |
"promote", | |
f"**Promoted User**\n\n**User:** {user.mention}\n**User ID:** `{user.id}`\n**Admin:** `{message.from_user.mention}`\n**Group:** `{message.chat.title}`\n**Group ID:** `{message.chat.id}`", | |
) | |
async def demote(client: Client, message: Message): | |
if len(message.command) < 2 and not message.reply_to_message: | |
return await hellbot.delete( | |
message, "ππΎπΎπ½ πΊ πππΎπππΊππΎ/ππ½ ππ ππΎππ π ππ πΊ πππΎπ ππ π½πΎππππΎ πππΎπ!" | |
) | |
if message.reply_to_message: | |
user = message.reply_to_message.from_user | |
else: | |
user = await client.get_users(message.command[1]) | |
try: | |
privileges = ChatPrivileges( | |
can_manage_chat=False, | |
can_delete_messages=False, | |
can_manage_video_chats=False, | |
can_restrict_members=False, | |
can_promote_members=False, | |
can_change_info=False, | |
can_invite_users=False, | |
can_pin_messages=False, | |
is_anonymous=False, | |
) | |
await message.chat.promote_member(user.id, privileges) | |
except Exception as e: | |
return await hellbot.error(message, e) | |
await hellbot.delete(message, f"**π π£πΎππππΎπ½ {user.mention} πππΌπΌπΎπππΏππ π π!**") | |
await hellbot.check_and_log( | |
"demote", | |
f"**Demoted User**\n\n**User:** {user.mention}\n**User ID:** `{user.id}`\n**Admin:** `{message.from_user.mention}`\n**Group:** `{message.chat.title}`\n**Group ID:** `{message.chat.id}`", | |
) | |
async def ban(client: Client, message: Message): | |
if message.reply_to_message: | |
user = message.reply_to_message.from_user | |
if len(message.command) < 2: | |
reason = None | |
else: | |
reason = await hellbot.input(message) | |
if message.command[0][0].lower() == "d": | |
await message.reply_to_message.delete() | |
elif len(message.command) == 2: | |
user = await client.get_users(message.command[1]) | |
reason = None | |
elif len(message.command) > 2: | |
user = await client.get_users(message.command[1]) | |
reason = (await hellbot.input(message)).split(" ", 1)[1].strip() | |
else: | |
return await hellbot.delete( | |
message, "ππΎπΎπ½ πΊ πππΎπππΊππΎ/ππ½ ππ ππΎππ π ππ πΊ πππΎπ ππ π»πΊπ πππΎπ!" | |
) | |
try: | |
await message.chat.ban_member(user.id) | |
except Exception as e: | |
return await hellbot.error(message, e) | |
reason = reason if reason else "Not Specified" | |
await hellbot.delete( | |
message, | |
f"**β οΈ π‘πΊπππΎπ½ {user.mention} πππΌπΌπΎπππΏππ π π!**\n**π±πΎπΊπππ:** `{reason}`", | |
30, | |
) | |
await hellbot.check_and_log( | |
"ban", | |
f"**Banned User**\n\n**User:** {user.mention}\n**User ID:** `{user.id}`\n**Reason:** `{reason}`\n**Admin:** `{message.from_user.mention}`\n**Group:** `{message.chat.title}`\n**Group ID:** `{message.chat.id}`", | |
) | |
async def unban(client: Client, message: Message): | |
if len(message.command) < 2 and not message.reply_to_message: | |
return await hellbot.delete( | |
message, "ππΎπΎπ½ πΊ πππΎπππΊππΎ/ππ½ ππ ππΎππ π ππ πΊ πππΎπ ππ πππ»πΊπ πππΎπ!" | |
) | |
if message.reply_to_message: | |
user = message.reply_to_message.from_user | |
else: | |
user = await client.get_users(message.command[1]) | |
try: | |
await message.chat.unban_member(user.id) | |
except Exception as e: | |
return await hellbot.error(message, e) | |
await hellbot.delete(message, f"**π€ π΄ππ»πΊπππΎπ½ {user.mention} π²ππΌπΌπΎπππΏππ π π!**", 30) | |
await hellbot.check_and_log( | |
"unban", | |
f"**Unbanned User**\n\n**User:** {user.mention}\n**User ID:** `{user.id}`\n**Admin:** `{message.from_user.mention}`\n**Group:** `{message.chat.title}`\n**Group ID:** `{message.chat.id}`", | |
) | |
async def kick(client: Client, message: Message): | |
if message.reply_to_message: | |
user = message.reply_to_message.from_user | |
if len(message.command) < 2: | |
reason = None | |
else: | |
reason = await hellbot.input(message) | |
if message.command[0][0].lower() == "d": | |
await message.reply_to_message.delete() | |
elif len(message.command) == 2: | |
user = await client.get_users(message.command[1]) | |
reason = None | |
elif len(message.command) > 2: | |
user = await client.get_users(message.command[1]) | |
reason = (await hellbot.input(message)).split(" ", 1)[1].strip() | |
else: | |
return await hellbot.delete( | |
message, "ππΎπΎπ½ πΊ πππΎπππΊππΎ/ππ½ ππ ππΎππ π ππ πΊ πππΎπ ππ πππΌπ πππΎπ!" | |
) | |
try: | |
await message.chat.ban_member(user.id) | |
except Exception as e: | |
return await hellbot.error(message, e) | |
reason = reason if reason else "Not Specified" | |
await hellbot.delete( | |
message, | |
f"**π πͺππΌππΎπ½ {user.mention} π²ππΌπΌπΎπππΏππ π π!**\n**π±πΎπΊπππ:** `{reason}`", | |
30, | |
) | |
await hellbot.check_and_log( | |
"kick", | |
f"**Kicked User**\n\n**User:** {user.mention}\n**User ID:** `{user.id}`\n**Reason:** `{reason}`\n**Admin:** `{message.from_user.mention}`\n**Group:** `{message.chat.title}`\n**Group ID:** `{message.chat.id}`", | |
) | |
await asyncio.sleep(5) | |
await message.chat.unban_member(user.id) | |
async def mute(client: Client, message: Message): | |
if message.reply_to_message: | |
user = message.reply_to_message.from_user | |
if len(message.command) < 2: | |
reason = None | |
else: | |
reason = await hellbot.input(message) | |
elif len(message.command) == 2: | |
user = await client.get_users(message.command[1]) | |
reason = None | |
elif len(message.command) > 2: | |
user = await client.get_users(message.command[1]) | |
reason = (await hellbot.input(message)).split(" ", 1)[1].strip() | |
else: | |
return await hellbot.delete( | |
message, "ππΎπΎπ½ πΊ πππΎπππΊππΎ/ππ½ ππ ππΎππ π ππ πΊ πππΎπ ππ ππππΎ πππΎπ!" | |
) | |
try: | |
permissions = ChatPermissions( | |
can_send_messages=False, | |
) | |
await message.chat.restrict_member(user.id, permissions) | |
except Exception as e: | |
return await hellbot.error(message, e) | |
reason = reason if reason else "Not Specified" | |
await hellbot.delete( | |
message, | |
f"**π€ π¬πππΎπ½ {user.mention} π²ππΌπΌπΎπππΏππ π π!**\n**π±πΎπΊπππ:** `{reason}`", | |
30, | |
) | |
await hellbot.check_and_log( | |
"mute", | |
f"**Muted User**\n\n**User:** {user.mention}\n**User ID:** `{user.id}`\n**Reason:** `{reason}`\n**Admin:** `{message.from_user.mention}`\n**Group:** `{message.chat.title}`\n**Group ID:** `{message.chat.id}`", | |
) | |
async def unmute(client: Client, message: Message): | |
if len(message.command) < 2 and not message.reply_to_message: | |
return await hellbot.delete( | |
message, "ππΎπΎπ½ πΊ πππΎπππΊππΎ/ππ½ ππ ππΎππ π ππ πΊ πππΎπ ππ ππππππΎ πππΎπ!" | |
) | |
if message.reply_to_message: | |
user = message.reply_to_message.from_user | |
else: | |
user = await client.get_users(message.command[1]) | |
try: | |
permissions = ChatPermissions( | |
can_send_messages=True, | |
) | |
await message.chat.restrict_member(user.id, permissions) | |
except Exception as e: | |
return await hellbot.error(message, e) | |
await hellbot.delete(message, f"**π π΄πππππΎπ½ {user.mention} π²ππΌπΌπΎπππΏππ π π!**", 30) | |
await hellbot.check_and_log( | |
"unmute", | |
f"**Unmuted User**\n\n**User:** {user.mention}\n**User ID:** `{user.id}`\n**Admin:** `{message.from_user.mention}`\n**Group:** `{message.chat.title}`\n**Group ID:** `{message.chat.id}`", | |
) | |
async def dmute(client: Client, message: Message): | |
if message.reply_to_message: | |
user = message.reply_to_message.from_user | |
if len(message.command) < 2: | |
reason = None | |
else: | |
reason = await hellbot.input(message) | |
elif len(message.command) == 2: | |
user = await client.get_users(message.command[1]) | |
reason = None | |
elif len(message.command) > 2: | |
user = await client.get_users(message.command[1]) | |
reason = (await hellbot.input(message)).split(" ", 1)[1].strip() | |
else: | |
return await hellbot.delete( | |
message, "ππΎπΎπ½ πΊ πππΎπππΊππΎ/ππ½ ππ ππΎππ π ππ πΊ πππΎπ ππ ππππΎ πππΎπ!" | |
) | |
if await db.is_muted(client.me.id, user.id, message.chat.id): | |
return await hellbot.delete(message, "This user is already dmuted.") | |
reason = reason if reason else "Not Specified" | |
await db.add_mute(client.me.id, user.id, message.chat.id, reason) | |
await hellbot.delete( | |
message, | |
f"**π€ π¬πππΎπ½ {user.mention} π²ππΌπΌπΎπππΏππ π π!**\n**π±πΎπΊπππ:** `{reason}`", | |
30, | |
) | |
await hellbot.check_and_log( | |
"dmute", | |
f"**D-Muted User**\n\n**User:** {user.mention}\n**User ID:** `{user.id}`\n**Reason:** `{reason}`\n**Admin:** `{message.from_user.mention}`\n**Group:** `{message.chat.title or message.chat.first_name}`\n**Group ID:** `{message.chat.id}`", | |
) | |
async def undmute(client: Client, message: Message): | |
if len(message.command) < 2 and not message.reply_to_message: | |
return await hellbot.delete( | |
message, "ππΎπΎπ½ πΊ πππΎπππΊππΎ/ππ½ ππ ππΎππ π ππ πΊ πππΎπ ππ ππππππΎ πππΎπ!" | |
) | |
if message.reply_to_message: | |
user = message.reply_to_message.from_user | |
else: | |
user = await client.get_users(message.command[1]) | |
if not await db.is_muted(client.me.id, user.id, message.chat.id): | |
return await hellbot.delete(message, "π³ππΎ πππΎπ ππ πππ ππππΎπ½!") | |
reason = await db.rm_mute(client.me.id, user.id, message.chat.id) | |
await hellbot.delete( | |
message, | |
f"**π π΄πππππΎπ½ {user.mention} π²ππΌπΌπΎπππΏππ π π!**\n\n**Mute reason was:** `{reason}`", | |
30, | |
) | |
await hellbot.check_and_log( | |
"unmute", | |
f"**D-Unmuted User**\n\n**User:** {user.mention}\n**User ID:** `{user.id}`\n**Admin:** `{message.from_user.mention}`\n**Group:** `{message.chat.title}`\n**Group ID:** `{message.chat.id}`", | |
) | |
async def pin(_, message: Message): | |
if not message.reply_to_message: | |
return await hellbot.delete(message, "ππΎπΎπ½ πΊ ππΎππ π ππ πππ πΊ ππΎπππΊππΎ!") | |
try: | |
await message.reply_to_message.pin() | |
except Exception as e: | |
return await hellbot.error(message, e) | |
await hellbot.delete( | |
message, | |
f"**π π―ππππΎπ½ [π¬πΎπππΊππΎ]({message.reply_to_message.link}) ππ {message.chat.title}!**", | |
30, | |
) | |
await hellbot.check_and_log( | |
"pin", | |
f"**Pinned Message**\n\n**Message:** [Click Here]({message.reply_to_message.link})\n**Admin:** `{message.from_user.mention}`\n**Group:** `{message.chat.title}`\n**Group ID:** `{message.chat.id}`", | |
) | |
async def unpin(_, message: Message): | |
if not message.reply_to_message: | |
return await hellbot.delete(message, "ππΎπΎπ½ πΊ ππΎππ π ππ πππππ πΊ ππΎπππΊππΎ!") | |
try: | |
await message.reply_to_message.unpin() | |
except Exception as e: | |
return await hellbot.error(message, e) | |
await hellbot.delete( | |
message, | |
f"**π π΄ππππππΎπ½ [π¬πΎπππΊππΎ]({message.reply_to_message.link}) ππ {message.chat.title}!**", | |
30, | |
) | |
await hellbot.check_and_log( | |
"unpin", | |
f"**Unpinned Message**\n\n**Message:** [Click Here]({message.reply_to_message.link})\n**Admin:** `{message.from_user.mention}`\n**Group:** `{message.chat.title}`\n**Group ID:** `{message.chat.id}`", | |
) | |
async def zombies(_, message: Message): | |
hell = await hellbot.edit(message, "β οΈ π£πΎππΎπΌππππ ππππ»ππΎπ...") | |
ded_users = [] | |
async for members in message.chat.get_members(): | |
if members.user.is_deleted: | |
ded_users.append(members.user.id) | |
if not ded_users: | |
return await hell.edit( | |
"π«‘ π£ππ'π ππΊππΎ πΊππ ππππ»ππΎπ ππ ππππ πππππ. **π¦πππππ' πΌπ πΎπΊπ π π₯!**" | |
) | |
if len(message.command) > 1 and message.command[1].lower() == "clean": | |
await hell.edit( | |
f"β οΈ π₯ππππ½ {len(ded_users)} ππππ»ππΎπ... **π« π³πππΎ ππ πππππΎ πππΎπ!**" | |
) | |
failed = 0 | |
success = 0 | |
for user in ded_users: | |
try: | |
await message.chat.ban_member(user) | |
success += 1 | |
except Exception as e: | |
LOGS.error(e) | |
failed += 1 | |
await hell.edit(f"**π―ππππΎπ½ {success} ππππ»ππΎπ!**\n`{failed}` holds immunity!") | |
else: | |
await hell.edit( | |
f"**β οΈ π₯ππππ½ {len(ded_users)} ππππ»ππΎπ!**\n\n__Use__ `{handler}zombies clean` __to kill them!__" | |
) | |
async def multiple_handler(client: Client, message: Message): | |
if not message.from_user: | |
return | |
if await db.is_muted(client.me.id, message.from_user.id, message.chat.id): | |
try: | |
await message.delete() | |
except: | |
pass | |
elif await db.is_gmuted(message.from_user.id): | |
try: | |
await message.delete() | |
except: | |
pass | |
elif await db.is_echo(client.me.id, message.chat.id, message.from_user.id): | |
await message.copy(message.chat.id, reply_to_message_id=message.id) | |
HelpMenu("admin").add( | |
"promote", | |
"<πππΎπππΊππΎ/ππ½/reply> <ππππ πΎ>", | |
"Promote a user to admin.", | |
"promote @ForGo10God hellboy", | |
).add( | |
"demote", "<username/id/reply>", "Demote a user from admin.", "demote @ForGo10God" | |
).add( | |
"ban", | |
"<username/id/reply> <reason>", | |
"Ban a user from the group.", | |
"ban @ForGo10God", | |
"You can also use dban to delete the message of the user.", | |
).add( | |
"unban", "<username/id/reply>", "Unban a user from the group.", "unban @ForGo10God" | |
).add( | |
"kick", | |
"<username/id/reply> <reason>", | |
"Kick a user from the group.", | |
"kick @ForGo10God", | |
"You can also use dkick to delete the message of the user.", | |
).add( | |
"mute", | |
"<username/id/reply> <reason>", | |
"Mute a user in the group", | |
"mute @ForGo10God", | |
"You can also use dmute to delete the message of the user.", | |
).add( | |
"unmute", "<username/id/reply>", "Unmute a user in the group.", "unmute @ForGo10God" | |
).add( | |
"dmute", | |
"<username/id/reply>", | |
"Mute a user by deleting their new messages in the group.", | |
"dmute @ForGo10God", | |
"Need delete message permission for proper functioning.", | |
).add( | |
"undmute", | |
"<username/id/reply>", | |
"Unmute a user who's muted using 'dmute' command in the group.", | |
"undmute @ForGo10God", | |
).add( | |
"pin", "<reply>", "Pin the replied message in the group." | |
).add( | |
"unpin", "<reply>", "Unpin the replied pinned message in the group." | |
).add( | |
"zombies", | |
"clean", | |
"Finds the total number of deleted users present in that group and ban them.", | |
).info( | |
"Admin Menu" | |
).done() | |