# This file is Originally Written By @okay-retard and @jayantkageri on GitHub # The Author (Jayant Kageri) just Ported this for Devloper Userbot # (C) 2021 Jayant Kageri import time import asyncio from pyrogram import filters from pyrogram.types import Message, ChatPermissions from pyrogram.errors import UserAdminInvalid from pyrogram.methods.chats.get_chat_members import Filters as ChatMemberFilters from _pyrogram import app, CMD_HELP from _pyrogram.helpers.pyrohelper import get_arg, get_args from _pyrogram.helpers.adminhelpers import CheckAdmin from config import PREFIX CMD_HELP.update( { "Admin Tools": """ **Admin Tools** `ban` -> Bans user indefinitely. `unban` -> Unbans the user. `promote` [optional title] -> Promotes a user. `demote` _> Demotes a user. `mute` -> Mutes user indefinitely. `unmute` -> Unmutes the user. `kick` -> Kicks the user out of the group. `gmute` -> Doesn't lets a user speak(even admins). `ungmute` -> Inverse of what gmute does. `pin` -> pins a message. `del` -> delete a message. `purge` -> purge message(s) `invite` -> add user to chat. """ } ) @app.on_message(filters.command("ban", PREFIX) & filters.me) async def ban_hammer(_, message: Message): reply = message.reply_to_message if reply: user = reply.from_user["id"] else: user = get_arg(message) try: get_user = await app.get_users(user) await app.kick_chat_member( chat_id=message.chat.id, user_id=get_user.id, ) await message.edit(f"Banned [{get_user.first_name}](tg://user?id={get_user.id}) from the chat.") except Exception as e: await message.edit(f"{e}") @app.on_message(filters.command("unban", PREFIX) & filters.me) async def unban(_, message: Message): reply = message.reply_to_message if reply: user = reply.from_user["id"] else: user = get_arg(message) try: get_user = await app.get_users(user) await app.unban_chat_member(chat_id=message.chat.id, user_id=get_user.id) await message.edit(f"Unbanned [{get_user.first_name}](tg://user?id={get_user.id}) from the chat.") except Exception as e: await message.edit(f"{e}") # Mute Permissions mute_permission = ChatPermissions( can_send_messages=False, can_send_media_messages=False, can_send_stickers=False, can_send_animations=False, can_send_games=False, can_use_inline_bots=False, can_add_web_page_previews=False, can_send_polls=False, can_change_info=False, can_invite_users=True, can_pin_messages=False, ) @app.on_message(filters.command("mute", PREFIX) & filters.me) async def mute_hammer(_, message: Message): reply = message.reply_to_message if reply: user = reply.from_user["id"] else: user = get_arg(message) try: get_user = await app.get_users(user) await app.restrict_chat_member(chat_id=message.chat.id, user_id=get_user.id, permissions=mute_permission) await message.edit(f"[{get_user.first_name}](tg://user?id={get_user.id}) has been muted.**") except Exception as e: await message.edit(f"{e}") # Unmute permissions unmute_permissions = ChatPermissions( can_send_messages=True, can_send_media_messages=True, can_send_stickers=True, can_send_animations=True, can_send_games=True, can_use_inline_bots=True, can_add_web_page_previews=True, can_send_polls=True, can_change_info=False, can_invite_users=True, can_pin_messages=False, ) @app.on_message(filters.command("unmute", PREFIX) & filters.me) async def unmute(_, message: Message): reply = message.reply_to_message if reply: user = reply.from_user["id"] else: user = get_arg(message) try: get_user = await app.get_users(user) await app.restrict_chat_member(chat_id=message.chat.id, user_id=get_user.id, permissions=unmute_permissions) await message.edit(f"[{get_user.first_name}](tg://user?id={get_user.id}) has been muted.**") except Exception as e: await message.edit(f"{e}") @app.on_message(filters.command("kick", PREFIX) & filters.me) async def kick_usr(_, message: Message): reply = message.reply_to_message if reply: user = reply.from_user["id"] else: user = get_arg(message) try: get_user = await app.get_users(user) await app.kick_chat_member(chat_id=message.chat.id, user_id=get_user.id) await app.unban_chat_member(chat_id=message.chat.id, user_id=get_user.id) await message.edit(f"Succefully Kicked [{get_user.first_name}](tg://user?id={get_user.id})") except Exception as e: await message.edit(f"{e}") @app.on_message(filters.command("pin", PREFIX) & filters.me) async def pin_message(_, message: Message): # First of all check if its a group or not if message.chat.type in ["group", "supergroup"]: # Here lies the sanity checks admins = await app.get_chat_members( message.chat.id, filter=ChatMemberFilters.ADMINISTRATORS ) admin_ids = [user.user.id for user in admins] me = await app.get_me() # If you are an admin if me.id in admin_ids: # If you replied to a message so that we can pin it. if message.reply_to_message: disable_notification = True # Let me see if you want to notify everyone. People are gonna hate you for this... if len(message.command) >= 2 and message.command[1] in [ "alert", "notify", "loud", ]: disable_notification = False # Pin the fucking message. await app.pin_chat_message( message.chat.id, message.reply_to_message.message_id, disable_notification=disable_notification, ) await message.edit("`Pinned message!`") else: # You didn't reply to a message and we can't pin anything. ffs await message.edit( "`Reply to a message so that I can pin the god damned thing...`" ) else: # You have no business running this command. await message.edit("User need to be Admin to use this command") else: # Are you fucking dumb this is not a group ffs. await message.edit("`This is not a place where I can Pin Messages`") # And of course delete your lame attempt at changing the group picture. # RIP you. # You're probably gonna get ridiculed by everyone in the group for your failed attempt. # RIP. await asyncio.sleep(3) await message.delete() @app.on_message(filters.command("promote", PREFIX) & filters.me) async def promote(client, message: Message): try: title = "Admin" reply = message.reply_to_message if reply: user = reply.from_user["id"] title = str(get_arg(message)) else: args = get_args(message) user = args[0] if len(args) > 1: title = " ".join(args[1:]) get_user = await app.get_users(user) await app.promote_chat_member(message.chat.id, user, can_manage_chat=True, can_change_info=True, can_delete_messages=True, can_restrict_members=True, can_invite_users=True, can_pin_messages=True, can_manage_voice_chats=True) await message.edit( f"Successfully Promoted [{get_user.first_name}](tg://user?id={get_user.id}) with title {title}" ) except Exception as e: await message.edit(f"{e}") if title: try: await app.set_administrator_title(message.chat.id, user, title) except: pass @app.on_message(filters.command("demote", PREFIX) & filters.me) async def demote(client, message: Message): try: reply = message.reply_to_message if reply: user = reply.from_user["id"] else: user = get_arg(message) get_user = await app.get_users(user) await app.promote_chat_member( message.chat.id, user, is_anonymous=False, can_change_info=False, can_delete_messages=False, can_edit_messages=False, can_invite_users=False, can_promote_members=False, can_restrict_members=False, can_pin_messages=False, can_post_messages=False, ) await message.edit( f"Successfully Demoted [{get_user.first_name}](tg://user?id={get_user.id})" ) except Exception as e: await message.edit(f"{e}") @app.on_message(filters.command("invite", PREFIX) & filters.me & ~filters.private) async def invite(client, message): reply = message.reply_to_message if reply: user = reply.from_user["id"] else: user = get_arg(message) if not user: await message.edit("**I can't invite no-one, can I?**") return get_user = await app.get_users(user) try: await app.add_chat_members(message.chat.id, get_user.id) await message.edit(f"Successfully added [{get_user.first_name}](tg://user?id={get_user.id}) to this chat") except Exception as e: await message.edit(f"{e}")