Эх сурвалжийг харах

fix: Trying to ban admins error (#238)

* fix: EOF

---------

Co-authored-by: Akshay Rajput <thehamkercat@gmail.com>
SI_NN_ER_LS 2 жил өмнө
parent
commit
027ace5925

+ 23 - 16
wbb/modules/admin.py

@@ -27,7 +27,7 @@ from contextlib import suppress
 from time import time
 
 from pyrogram import filters
-from pyrogram.enums import ChatMembersFilter, ChatType
+from pyrogram.enums import ChatMembersFilter, ChatType, ChatMemberStatus
 from pyrogram.errors import FloodWait
 from pyrogram.types import (
     CallbackQuery,
@@ -519,21 +519,28 @@ async def demote(_, message: Message):
         return await message.reply_text(
             "You wanna demote the elevated one?, RECONSIDER!"
         )
-    await message.chat.promote_member(
-        user_id=user_id,
-        privileges=ChatPrivileges(
-            can_change_info=False,
-            can_invite_users=False,
-            can_delete_messages=False,
-            can_restrict_members=False,
-            can_pin_messages=False,
-            can_promote_members=False,
-            can_manage_chat=False,
-            can_manage_video_chats=False,
-        ),
-    )
-    umention = (await app.get_users(user_id)).mention
-    await message.reply_text(f"Demoted! {umention}")
+    try:
+        member = await app.get_chat_member(message.chat.id, user_id)
+        if member.status ==  ChatMemberStatus.ADMINISTRATOR:
+            await message.chat.promote_member(
+                user_id=user_id,
+                privileges=ChatPrivileges(
+                    can_change_info=False,
+                    can_invite_users=False,
+                    can_delete_messages=False,
+                    can_restrict_members=False,
+                    can_pin_messages=False,
+                    can_promote_members=False,
+                    can_manage_chat=False,
+                    can_manage_video_chats=False,
+                ),
+            )
+            umention = (await app.get_users(user_id)).mention
+            await message.reply_text(f"Demoted! {umention}")
+        else:
+            await message.reply_text("The person you mentioned is not an admin.")
+    except Exception as e:
+        await message.reply_text(e)
 
 
 # Pin Messages

+ 7 - 4
wbb/modules/sudoers.py

@@ -30,6 +30,7 @@ import psutil
 from pyrogram import filters, types
 from pyrogram.errors import FloodWait
 from pyrogram.types import InlineKeyboardMarkup
+from pyrogram.enums import ChatMemberStatus
 
 from wbb import (
     BOT_ID,
@@ -120,8 +121,10 @@ async def ban_globally(_, message):
     number_of_chats = 0
     for served_chat in served_chats:
         try:
-            await app.ban_chat_member(served_chat["chat_id"], user.id)
-            number_of_chats += 1
+            chat_member = await app.get_chat_member(served_chat["chat_id"], user.id)
+            if chat_member.status == ChatMemberStatus.MEMBER:
+                await app.ban_chat_member(served_chat["chat_id"], user.id)
+                number_of_chats += 1
             await asyncio.sleep(1)
         except FloodWait as e:
             await asyncio.sleep(int(e.value))
@@ -207,8 +210,8 @@ async def broadcast_message(_, message):
                 text=text,
                 reply_markup=reply_markup,
             )
-            await asyncio.sleep(sleep_time)
             sent += 1
+            await asyncio.sleep(sleep_time)
         except FloodWait as e:
             await asyncio.sleep(int(e.value))
         except Exception:
@@ -261,8 +264,8 @@ async def broadcast_message(_, message):
                 text=text,
                 reply_markup=reply_markup,
             )
-            await asyncio.sleep(sleep_time)
             sent += 1
+            await asyncio.sleep(sleep_time)
         except FloodWait as e:
             await asyncio.sleep(int(e.value))
         except Exception: