TheHamkerCat před 5 roky
rodič
revize
f637491ba9
1 změnil soubory, kde provedl 95 přidání a 88 odebrání
  1. 95 88
      wbb/modules/admin.py

+ 95 - 88
wbb/modules/admin.py

@@ -49,6 +49,8 @@ async def member_permissions(chat_id, user_id):
         perms.append("can_invite_users")
     if member.can_pin_messages:
         perms.append("can_pin_messages")
+    if member.can_manage_voice_chats:
+        perms.append("can_manage_voice_chats")
     return perms
 
 
@@ -113,32 +115,27 @@ async def kick(_, message):
         from_user_id = message.from_user.id
         chat_id = message.chat.id
         permissions = await member_permissions(chat_id, from_user_id)
-        if "can_restrict_members" in permissions or from_user_id in SUDOERS:
-            if len(message.command) == 2:
-                username = message.text.split(None, 1)[1]
-                if (await app.get_users(username)).id in SUDOERS:
-                    await message.reply_text("You Wanna Kick The Elevated One?")
-                else:
-                    if (await app.get_users(username)).id in \
-                            await list_members(chat_id):
-                        await message.chat.kick_member(username)
-                        await message.chat.unban_member(username)
-                        await message.reply_text(f"Kicked {username}")
-                    else:
-                        await message.reply_text("This user isn't here,"
-                                                 " consider kicking yourself.")
-
-            if len(message.command) == 1 and message.reply_to_message:
-                user_id = message.reply_to_message.from_user.id
-                if user_id in SUDOERS:
-                    await message.reply_text("You Wanna Kick The Elevated One?")
-                else:
-                    if user_id in await list_members(chat_id):
-                        await message.reply_to_message.chat.kick_member(user_id)
-                        await message.reply_to_message.chat.unban_member(user_id)
-                        await message.reply_text("Kicked!")
-                    else:
-                        await message.reply_text("This user isn't here.")
+        if "can_restrict_members" not in permissions or from_user_id not in SUDOERS:
+            await message.reply_text("You don't have enough permissions.")
+            return
+        if len(message.command) == 2:
+            username = message.text.split(None, 1)[1]
+            if (await app.get_users(username)).id in SUDOERS:
+                await message.reply_text("You Wanna Kick The Elevated One?")
+            else:
+                await message.chat.kick_member(username)
+                await message.chat.unban_member(username)
+                await message.reply_text(f"Kicked")
+        elif len(message.command) == 1 and message.reply_to_message:
+            user_id = message.reply_to_message.from_user.id
+            if user_id in SUDOERS:
+                await message.reply_text("You Wanna Kick The Elevated One?")
+            else:
+                await message.reply_to_message.chat.kick_member(user_id)
+                await message.reply_to_message.chat.unban_member(user_id)
+                await message.reply_text("Kicked!")
+        else:
+            await message.reply_text("Provide a username or reply to a user's message to kick.")
     except Exception as e:
         print(e)
         await message.reply_text(e)
@@ -153,30 +150,26 @@ async def ban(_, message):
         from_user_id = message.from_user.id
         chat_id = message.chat.id
         permissions = await member_permissions(chat_id, from_user_id)
-        if "can_restrict_members" in permissions or from_user_id in SUDOERS:
-            if len(message.command) == 2:
-                username = message.text.split(None, 1)[1]
-                if (await app.get_users(username)).id in SUDOERS:
-                    await message.reply_text("You Wanna Ban The Elevated One?")
-                else:
-                    if (await app.get_users(username)).id in \
-                            await list_members(chat_id):
-                        await message.chat.kick_member(username)
-                        await message.reply_text(f"Banned! {username}")
-                    else:
-                        await message.reply_text("This user isn't here,"
-                                                 " consider banning yourself.")
+        if "can_restrict_members" not in permissions or from_user_id not in SUDOERS:
+            await message.reply_text("You don't have enough permissions.")
+            return
+        if len(message.command) == 2:
+            username = message.text.split(None, 1)[1]
+            if (await app.get_users(username)).id in SUDOERS:
+                await message.reply_text("You Wanna Ban The Elevated One?")
+            else:
+                await message.chat.kick_member(username)
+                await message.reply_text(f"Banned!")
 
-            if len(message.command) == 1 and message.reply_to_message:
-                user_id = message.reply_to_message.from_user.id
-                if user_id in SUDOERS:
-                    await message.reply_text("You Wanna Ban The Elevated One?")
-                else:
-                    if user_id in await list_members(chat_id):
-                        await message.reply_to_message.chat.kick_member(user_id)
-                        await message.reply_text("Banned!")
-                    else:
-                        await message.reply_text("This user isn't here.")
+        elif len(message.command) == 1 and message.reply_to_message:
+            user_id = message.reply_to_message.from_user.id
+            if user_id in SUDOERS:
+                await message.reply_text("You Wanna Ban The Elevated One?")
+            else:
+                await message.reply_to_message.chat.kick_member(user_id)
+                await message.reply_text("Banned!")
+        else:
+            await message.reply_text("Provide a username or reply to a user's message to ban.")
     except Exception as e:
         await message.reply_text(str(e))
 
@@ -191,25 +184,19 @@ async def unban(_, message):
         from_user_id = message.from_user.id
         chat_id = message.chat.id
         permissions = await member_permissions(chat_id, from_user_id)
-        if "can_restrict_members" in permissions or from_user_id in SUDOERS:
+        if "can_restrict_members" not in permissions or from_user_id not in SUDOERS:
+            await message.reply_text("You don't have enough permissions.")
+            return
             if len(message.command) == 2:
                 username = message.text.split(None, 1)[1]
-                if (await app.get_users(username)).id not in \
-                        await list_members(message.chat.id):
-                    await message.chat.unban_member(username)
-                    await message.reply_text(f"Unbanned! {username}")
-                else:
-                    await message.reply_text("This user is already here,"
-                                             " consider banning yourself.")
-
-            if len(message.command) == 1 and message.reply_to_message:
+                await message.chat.unban_member(username)
+                await message.reply_text(f"Unbanned!")
+            elif len(message.command) == 1 and message.reply_to_message:
                 user_id = message.reply_to_message.from_user.id
-                if user_id not in \
-                        await list_members(chat_id):
-                    await message.chat.unban_member(user_id)
-                    await message.reply_text("Unbanned!")
-                else:
-                    await message.reply_text("This user is already here.")
+                await message.chat.unban_member(user_id)
+                await message.reply_text("Unbanned!")
+            else:
+                await message.reply_text("Provide a username or reply to a user's message to unban.")
     except Exception as e:
         await message.reply_text(str(e))
 
@@ -227,12 +214,12 @@ async def delete(_, message):
         from_user_id = message.from_user.id
         chat_id = message.chat.id
         permissions = await member_permissions(chat_id, from_user_id)
-        if "can_delete_messages" in permissions or from_user_id in SUDOERS:
-            await message.reply_to_message.delete()
-            await message.delete()
-        else:
+        if "can_delete_messages" not in permissions or from_user_id not in SUDOERS:
             await message.reply_text("You Don't Have Enough Permissions,"
                                      + " Consider Deleting Yourself!")
+            return
+        await message.reply_to_message.delete()
+        await message.delete()
     except Exception as e:
         await message.reply_text(str(e))
 
@@ -306,20 +293,36 @@ async def pin(_, message):
 @app.on_message(filters.command("mute") & ~filters.edited)
 @capture_err
 async def mute(_, message):
-    if not message.reply_to_message:
-        await message.reply_text("Reply To A User's Message!")
-        return
     try:
-        chat_id = message.chat.id
         from_user_id = message.from_user.id
+        chat_id = message.chat.id
         permissions = await member_permissions(chat_id, from_user_id)
-        if "can_restrict_members" in permissions or from_user_id in SUDOERS:
+        if "can_restrict_members" not in permissions or from_user_id not in SUDOERS:
+            await message.reply_text("You don't have enough permissions.")
+            return
+        if len(message.command) == 2:
+            username = message.text.split(None, 1)[1]
+            if (await app.get_users(username)).id in SUDOERS:
+                await message.reply_text("You Wanna Mute The Elevated One?")
+            else:
+                await message.chat.restrict_member(
+                    user_id,
+                    permissions=ChatPermissions()
+                )
+                await message.reply_text(f"Muted!")
+
+        elif len(message.command) == 1 and message.reply_to_message:
             user_id = message.reply_to_message.from_user.id
-            await message.chat.restrict_member(user_id,
-                                               permissions=ChatPermissions())
-            await message.reply_text("Muted!")
+            if user_id in SUDOERS:
+                await message.reply_text("You Wanna Mute The Elevated One?")
+            else:
+                await message.chat.restrict_member(
+                    user_id,
+                    permissions=ChatPermissions()
+                )
+                await message.reply_text("Muted!")
         else:
-            await message.reply_text("Get Yourself An Admin Tag!")
+            await message.reply_text("Provide a username or reply to a user's message to mute.")
     except Exception as e:
         await message.reply_text(str(e))
 
@@ -329,19 +332,23 @@ async def mute(_, message):
 @app.on_message(filters.command("unmute") & ~filters.edited)
 @capture_err
 async def unmute(_, message):
-    if not message.reply_to_message:
-        await message.reply_text("Reply To A User's Message!")
-        return
     try:
-        chat_id = message.chat.id
         from_user_id = message.from_user.id
+        chat_id = message.chat.id
         permissions = await member_permissions(chat_id, from_user_id)
-        if "can_restrict_members" in permissions or from_user_id in SUDOERS:
-            user_id = message.reply_to_message.from_user.id
-            await message.chat.unban_member(user_id)
-            await message.reply_text("Unmuted!")
-        else:
-            await message.reply_text("Get Yourself An Admin Tag!")
+        if "can_restrict_members" not in permissions or from_user_id not in SUDOERS:
+            await message.reply_text("You don't have enough permissions.")
+            return
+            if len(message.command) == 2:
+                username = message.text.split(None, 1)[1]
+                await message.chat.unban_member(username)
+                await message.reply_text(f"Unmuted!")
+            elif len(message.command) == 1 and message.reply_to_message:
+                user_id = message.reply_to_message.from_user.id
+                await message.chat.unban_member(user_id)
+                await message.reply_text("Unmuted!")
+            else:
+                await message.reply_text("Provide a username or reply to a user's message to Unmute")
     except Exception as e:
         await message.reply_text(str(e))