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() | |