浏览代码

Some fixes and Improvements (#157)

* Some fixes and Improvements

- Auto update admin cache
- Managing sudoers made easy. Adding and deleting sudoers without restarting bot.
- Added Exception on getting sudoers list where userbot client fails to resolve peer for sudoer
- Fixed a issue 'float' object has no attribute 'to_bytes' inside blacklist module
- Fixed some formatting in blacklist.py , download_upload.py and parse_preview.py
- Fixed some errors in autocorrect.py
- Added a class for Logging
Shikhar Kumar 4 年之前
父节点
当前提交
99190578c0

+ 28 - 6
wbb/__init__.py

@@ -1,4 +1,3 @@
-# flake8: noqa F405
 """
 MIT License
 
@@ -29,7 +28,7 @@ from os import path
 
 from aiohttp import ClientSession
 from motor.motor_asyncio import AsyncIOMotorClient as MongoClient
-from pyrogram import Client
+from pyrogram import Client, filters
 from pyrogram.types import Message
 from pyromod import listen
 from Python_ARQ import ARQ
@@ -44,12 +43,12 @@ else:
 
 USERBOT_PREFIX = USERBOT_PREFIX
 GBAN_LOG_GROUP_ID = GBAN_LOG_GROUP_ID
-SUDOERS = SUDO_USERS_ID
 WELCOME_DELAY_KICK_SEC = WELCOME_DELAY_KICK_SEC
 LOG_GROUP_ID = LOG_GROUP_ID
 MESSAGE_DUMP_CHAT = MESSAGE_DUMP_CHAT
 MOD_LOAD = []
 MOD_NOLOAD = []
+SUDOERS = filters.user()
 bot_start_time = time.time()
 
 # MongoDB client
@@ -64,7 +63,8 @@ async def load_sudoers():
     sudoersdb = db.sudoers
     sudoers = await sudoersdb.find_one({"sudo": "sudo"})
     sudoers = [] if not sudoers else sudoers["sudoers"]
-    for user_id in SUDOERS:
+    for user_id in SUDO_USERS_ID:
+        SUDOERS.add(user_id)
         if user_id not in sudoers:
             sudoers.append(user_id)
             await sudoersdb.update_one(
@@ -72,7 +72,9 @@ async def load_sudoers():
                 {"$set": {"sudoers": sudoers}},
                 upsert=True,
             )
-    SUDOERS = (SUDOERS + sudoers) if sudoers else SUDOERS
+    if sudoers:
+        for user_id in sudoers:
+            SUDOERS.add(user_id)
     print("[INFO]: LOADED SUDOERS")
 
 
@@ -117,7 +119,7 @@ USERBOT_MENTION = y.mention
 USERBOT_DC_ID = y.dc_id
 
 if USERBOT_ID not in SUDOERS:
-    SUDOERS.append(USERBOT_ID)
+    SUDOERS.add(USERBOT_ID)
 
 telegraph = Telegraph()
 telegraph.create_account(short_name=BOT_USERNAME)
@@ -131,3 +133,23 @@ async def eor(msg: Message, **kwargs):
     )
     spec = getfullargspec(func.__wrapped__).args
     return await func(**{k: v for k, v in kwargs.items() if k in spec})
+
+
+class Log:
+    def __init__(self, save_to_file=False, file_name="wbb.log"):
+        self.save_to_file = save_to_file
+        self.file_name = file_name
+
+    def info(self, msg):
+        print(f"[+]: {msg}")
+        if self.save_to_file:
+            with open(self.file_name, "a") as f:
+                f.write(f"[INFO]({ctime(time())}): {msg}\n")
+
+    def error(self, msg):
+        print(f"[-]: {msg}")
+        if self.save_to_file:
+            with open(self.file_name, "a") as f:
+                f.write(f"[ERROR]({ctime(time())}): {msg}\n")
+
+log = Log(True, "bot.log")

+ 1 - 1
wbb/core/tasks.py

@@ -83,7 +83,7 @@ async def _get_tasks_text():
 
 
 @app2.on_message(
-    filters.user(SUDOERS)
+    SUDOERS
     & ~filters.forwarded
     & ~filters.via_bot
     & filters.command("lsTasks", prefixes=USERBOT_PREFIX)

+ 21 - 3
wbb/modules/admin.py

@@ -25,9 +25,9 @@ import asyncio
 from time import time
 
 from pyrogram import filters
-from pyrogram.types import CallbackQuery, ChatPermissions, Message
+from pyrogram.types import CallbackQuery, ChatPermissions, Message, ChatMemberUpdated
 
-from wbb import BOT_ID, SUDOERS, app
+from wbb import BOT_ID, SUDOERS, app, log
 from wbb.core.decorators.errors import capture_err
 from wbb.core.keyboard import ikb
 from wbb.utils.dbfunctions import (add_warn, get_warn, int_to_alpha,
@@ -56,7 +56,8 @@ __HELP__ = """/ban - Ban A User
 /tmute - Mute A User For Specific Time
 /unmute - Unmute A User
 /ban_ghosts - Ban Deleted Accounts
-/report | @admins | @admin - Report A Message To Admins."""
+/report | @admins | @admin - Report A Message To Admins.
+/admincache - Reload admin list"""
 
 
 async def member_permissions(chat_id: int, user_id: int):
@@ -133,6 +134,23 @@ async def current_chat_permissions(chat_id):
     return perms
 
 
+# Admin cache reload
+
+@app.old_chat_member(~filters.private)
+async def admincacheFunc(_, cmu: ChatMemberUpdated):
+    if cmu.old_chat_member and cmu.old_chat_member.promoted_by:
+        admins_in_chat[cmu.chat.id] = {
+            "last_updated_at": time(),
+            "data": [
+                member.user.id
+                async for member in app.iter_chat_members(
+                    cmu.chat.id, filter="administrators"
+                )
+            ],
+        }
+        log.info(f"Updated admin cache for {cmu.chat.id} [{cmu.chat.title}]")
+      
+
 # Purge Messages
 
 

+ 1 - 1
wbb/modules/alive.py

@@ -28,7 +28,7 @@ from wbb import BOT_ID, SUDOERS, USERBOT_PREFIX, app2
 
 
 @app2.on_message(
-    filters.command("alive", prefixes=USERBOT_PREFIX) & filters.user(SUDOERS)
+    filters.command("alive", prefixes=USERBOT_PREFIX) & SUDOERS
 )
 async def alive_command_func(_, message):
     await message.delete()

+ 2 - 2
wbb/modules/anonymize.py

@@ -40,7 +40,7 @@ from wbb.utils.functions import extract_user
 
 @app2.on_message(
     filters.command("anonymize", prefixes=USERBOT_PREFIX)
-    & filters.user(SUDOERS)
+    & SUDOERS
 )
 async def change_profile(_, message: Message):
     m = await eor(message, text="Anonymizing...")
@@ -69,7 +69,7 @@ async def change_profile(_, message: Message):
 
 @app2.on_message(
     filters.command("impersonate", prefixes=USERBOT_PREFIX)
-    & filters.user(SUDOERS)
+    & SUDOERS
 )
 async def impersonate(_, message: Message):
     user_id = await extract_user(message)

+ 6 - 6
wbb/modules/autocorrect.py

@@ -3,7 +3,7 @@ from pyrogram.types import Message
 
 from wbb import SUDOERS, USERBOT_ID, USERBOT_PREFIX, app, app2, arq
 from wbb.utils.filter_groups import autocorrect_group
-
+from wbb.modules.userbot import eor
 
 @app.on_message(filters.command("autocorrect"))
 async def autocorrect_bot(_, message: Message):
@@ -25,21 +25,21 @@ IS_ENABLED = False
 
 @app2.on_message(
     filters.command("autocorrect", prefixes=USERBOT_PREFIX)
-    & filters.user(SUDOERS)
+    & SUDOERS
 )
 async def autocorrect_ubot_toggle(_, message: Message):
     global IS_ENABLED
     if len(message.command) != 2:
-        return await message.edit("Not enough arguments.")
+        return await eor(message, text="Not enough arguments.")
     state = message.text.split(None, 1)[1].strip().lower()
     if state == "enable":
         IS_ENABLED = True
-        await message.edit("Enabled!")
+        await eor(message, text="Enabled!")
     elif state == "disable":
         IS_ENABLED = False
-        await message.edit("Disabled!")
+        await eor(message, text="Disabled!")
     else:
-        return await message.edit("Wrong argument, Pass (ENABLE|DISABLE).")
+        return await eor(message, text="Wrong argument, Pass (ENABLE|DISABLE).")
 
 
 @app2.on_message(

+ 1 - 1
wbb/modules/blacklist.py

@@ -115,7 +115,7 @@ async def blacklist_filters_re(_, message):
                 await message.chat.restrict_member(
                     user.id,
                     ChatPermissions(),
-                    until_date=(time() + 3600),
+                    until_date=int(time() + 3600),
                 )
             except Exception:
                 return

+ 5 - 3
wbb/modules/blacklist_chat.py

@@ -19,7 +19,7 @@ in which you don't want it to be in.
 """
 
 
-@app.on_message(filters.command("blacklist_chat") & filters.user(SUDOERS))
+@app.on_message(filters.command("blacklist_chat") & SUDOERS)
 @capture_err
 async def blacklist_chat_func(_, message: Message):
     if len(message.command) != 2:
@@ -37,7 +37,7 @@ async def blacklist_chat_func(_, message: Message):
     await message.reply_text("Something wrong happened, check logs.")
 
 
-@app.on_message(filters.command("whitelist_chat") & filters.user(SUDOERS))
+@app.on_message(filters.command("whitelist_chat") & SUDOERS)
 @capture_err
 async def whitelist_chat_func(_, message: Message):
     if len(message.command) != 2:
@@ -55,7 +55,7 @@ async def whitelist_chat_func(_, message: Message):
     await message.reply_text("Something wrong happened, check logs.")
 
 
-@app.on_message(filters.command("blacklisted_chats") & filters.user(SUDOERS))
+@app.on_message(filters.command("blacklisted_chats") & SUDOERS)
 @capture_err
 async def blacklisted_chats_func(_, message: Message):
     text = ""
@@ -65,4 +65,6 @@ async def blacklisted_chats_func(_, message: Message):
         except Exception:
             title = "Private"
         text += f"**{count}. {title}** [`{chat_id}`]\n"
+    if text == "":
+        return await message.reply_text("No blacklisted chats found.")
     await message.reply_text(text)

+ 1 - 1
wbb/modules/chatbot.py

@@ -113,7 +113,7 @@ async def chatbot_talk(_, message: Message):
 @app2.on_message(
     filters.command("chatbot", prefixes=USERBOT_PREFIX)
     & ~filters.edited
-    & filters.user(SUDOERS)
+    & SUDOERS
 )
 @capture_err
 async def chatbot_status_ubot(_, message: Message):

+ 1 - 1
wbb/modules/create.py

@@ -29,7 +29,7 @@ from wbb.modules.userbot import eor
 
 
 @app2.on_message(
-    filters.user(SUDOERS)
+    SUDOERS
     & ~filters.forwarded
     & ~filters.via_bot
     & ~filters.edited

+ 1 - 1
wbb/modules/dice.py

@@ -11,7 +11,7 @@ __HELP__ = """
 
 
 @app2.on_message(
-    filters.command("dice", prefixes=USERBOT_PREFIX) & filters.user(SUDOERS)
+    filters.command("dice", prefixes=USERBOT_PREFIX) & SUDOERS
 )
 @app.on_message(filters.command("dice"))
 async def throw_dice(client, message: Message):

+ 3 - 3
wbb/modules/download_upload.py

@@ -37,7 +37,7 @@ from wbb.utils.downloader import download
 
 
 @app2.on_message(
-    filters.user(SUDOERS)
+    SUDOERS
     & filters.command("download", prefixes=USERBOT_PREFIX)
 )
 async def download_func(_, message: Message):
@@ -77,7 +77,7 @@ async def download_func(_, message: Message):
 
     text = message.text
     if len(text.split()) < 2:
-        return await eor(message, text="Invalid Arguments")
+        return await eor(m, text="Invalid Arguments")
 
     url = text.split(None, 1)[1]
 
@@ -107,7 +107,7 @@ async def download_func(_, message: Message):
 
 
 @app2.on_message(
-    filters.user(SUDOERS) & filters.command("upload", prefixes=USERBOT_PREFIX)
+    SUDOERS & filters.command("upload", prefixes=USERBOT_PREFIX)
 )
 async def upload_func(_, message: Message):
     if len(message.text.split()) != 2:

+ 2 - 2
wbb/modules/flood.py

@@ -87,8 +87,8 @@ async def flood_control_func(_, message: Message):
     reset_flood(chat_id, user_id)
 
     # Ignore devs and admins
-    mods = (await list_admins(chat_id)) + SUDOERS
-    if user_id in mods:
+    mods = (await list_admins(chat_id))
+    if user_id in mods or user_id in SUDOERS:
         return
 
     # Mute if user sends more than 10 messages in a row

+ 2 - 2
wbb/modules/global_stats.py

@@ -40,7 +40,7 @@ from wbb.utils.inlinefuncs import keywords_list
 
 
 @app.on_message(
-    filters.command("clean_db") & filters.user(SUDOERS) & ~filters.edited
+    filters.command("clean_db") & ~filters.edited & SUDOERS
 )
 @capture_err
 async def clean_db(_, message):
@@ -62,7 +62,7 @@ async def clean_db(_, message):
 
 
 @app.on_message(
-    filters.command("gstats") & filters.user(SUDOERS) & ~filters.edited
+    filters.command("gstats") & ~filters.edited & SUDOERS
 )
 @capture_err
 async def global_stats(_, message):

+ 2 - 1
wbb/modules/locks.py

@@ -155,7 +155,8 @@ async def url_detector(_, message):
 
     if not text or not user:
         return
-    if user.id in (SUDOERS + (await list_admins(chat_id))):
+    mods = (await list_admins(chat_id))
+    if user.id in mods or user.id in SUDOERS:
         return
 
     check = get_urls_from_text(text)

+ 1 - 1
wbb/modules/misc.py

@@ -132,7 +132,7 @@ async def runs(_, message):
 
 
 @app2.on_message(
-    filters.command("id", prefixes=USERBOT_PREFIX) & filters.user(SUDOERS)
+    filters.command("id", prefixes=USERBOT_PREFIX) & SUDOERS
 )
 @app.on_message(filters.command("id"))
 async def getid(client, message):

+ 1 - 1
wbb/modules/mongo_backup.py

@@ -30,7 +30,7 @@ from pyrogram.types import Message
 from wbb import MONGO_URL, SUDOERS, app
 
 
-@app.on_message(filters.command("backup") & filters.user(SUDOERS))
+@app.on_message(filters.command("backup") & SUDOERS)
 async def backup(_, message: Message):
     if message.chat.type != "private":
         return await message.reply("This command can only be used in private")

+ 4 - 4
wbb/modules/notes.py

@@ -47,7 +47,7 @@ Checkout /markdownhelp to know more about formattings and other syntax.
 
 
 @app2.on_message(
-    filters.command("save", prefixes=USERBOT_PREFIX) & filters.user(SUDOERS)
+    filters.command("save", prefixes=USERBOT_PREFIX) & SUDOERS
 )
 @app.on_message(filters.command("save") & ~filters.edited & ~filters.private)
 @adminsOnly("can_change_info")
@@ -84,7 +84,7 @@ async def save_notee(_, message):
 
 
 @app2.on_message(
-    filters.command("notes", prefixes=USERBOT_PREFIX) & filters.user(SUDOERS)
+    filters.command("notes", prefixes=USERBOT_PREFIX) & SUDOERS
 )
 @app.on_message(filters.command("notes") & ~filters.edited & ~filters.private)
 @capture_err
@@ -105,7 +105,7 @@ async def get_notes(_, message):
 
 
 @app2.on_message(
-    filters.command("get", prefixes=USERBOT_PREFIX) & filters.user(SUDOERS)
+    filters.command("get", prefixes=USERBOT_PREFIX) & SUDOERS
 )
 async def get_one_note_userbot(_, message):
     if len(message.text.split()) < 2:
@@ -156,7 +156,7 @@ async def get_one_note(_, message):
 
 
 @app2.on_message(
-    filters.command("delete", prefixes=USERBOT_PREFIX) & filters.user(SUDOERS)
+    filters.command("delete", prefixes=USERBOT_PREFIX) & SUDOERS
 )
 @app.on_message(filters.command("delete") & ~filters.edited & ~filters.private)
 @adminsOnly("can_change_info")

+ 4 - 4
wbb/modules/parse_preview.py

@@ -9,16 +9,16 @@ from wbb.core.sections import section
 
 @app2.on_message(
     filters.command("parse_preview", prefixes=USERBOT_PREFIX)
-    & filters.user(SUDOERS),
+    & SUDOERS
 )
 async def parse(_, message: Message):
     r = message.reply_to_message
     has_wpp = False
-
-    m_ = await eor(message, text="Parsing...")
     if not r:
-        return await m_.edit("Reply to a message with a webpage")
+        return await eor(message, text="Reply to a message with a webpage")
 
+    m_ = await eor(message, text="Parsing...")
+    
     if not r.web_page:
         text = r.text or r.caption
         if text:

+ 1 - 1
wbb/modules/paste.py

@@ -39,7 +39,7 @@ pattern = re.compile(r"^text/|json$|yaml$|xml$|toml$|x-sh$|x-shellscript$")
 
 
 @app2.on_message(
-    filters.command("paste", prefixes=USERBOT_PREFIX) & filters.user(SUDOERS)
+    filters.command("paste", prefixes=USERBOT_PREFIX) & SUDOERS
 )
 @app.on_message(filters.command("paste") & ~filters.edited)
 @capture_err

+ 3 - 3
wbb/modules/pipes.py

@@ -95,7 +95,7 @@ async def pipes_worker_userbot(_, message: Message):
         await app.send_message(to_chat_id, text=message.text + caption)
 
 
-@app.on_message(filters.command("activate_pipe") & filters.user(SUDOERS))
+@app.on_message(filters.command("activate_pipe") & SUDOERS)
 @capture_err
 async def activate_pipe_func(_, message: Message):
     global pipes_list_bot, pipes_list_userbot
@@ -125,7 +125,7 @@ async def activate_pipe_func(_, message: Message):
     await message.reply_text("Activated pipe.")
 
 
-@app.on_message(filters.command("deactivate_pipe") & filters.user(SUDOERS))
+@app.on_message(filters.command("deactivate_pipe") & SUDOERS)
 @capture_err
 async def deactivate_pipe_func(_, message: Message):
     global pipes_list_bot, pipes_list_userbot
@@ -147,7 +147,7 @@ async def deactivate_pipe_func(_, message: Message):
     await message.reply_text("Deactivated pipe.")
 
 
-@app.on_message(filters.command("pipes") & filters.user(SUDOERS))
+@app.on_message(filters.command("pipes") & SUDOERS)
 @capture_err
 async def show_pipes_func(_, message: Message):
     pipes_list_bot.update(pipes_list_userbot)

+ 5 - 5
wbb/modules/pmpermit.py

@@ -41,7 +41,7 @@ flood = {}
     & ~filters.me
     & ~filters.bot
     & ~filters.via_bot
-    & ~filters.user(SUDOERS)
+    & ~SUDOERS
 )
 @capture_err
 async def pmpermit_func(_, message):
@@ -69,7 +69,7 @@ async def pmpermit_func(_, message):
 
 @app2.on_message(
     filters.command("approve", prefixes=USERBOT_PREFIX)
-    & filters.user(SUDOERS)
+    & SUDOERS
     & ~filters.via_bot
 )
 @capture_err
@@ -85,7 +85,7 @@ async def pm_approve(_, message):
 
 @app2.on_message(
     filters.command("disapprove", prefixes=USERBOT_PREFIX)
-    & filters.user(SUDOERS)
+    & SUDOERS
     & ~filters.via_bot
 )
 async def pm_disapprove(_, message):
@@ -109,7 +109,7 @@ async def pm_disapprove(_, message):
 
 @app2.on_message(
     filters.command("block", prefixes=USERBOT_PREFIX)
-    & filters.user(SUDOERS)
+    & SUDOERS
     & ~filters.via_bot
 )
 @capture_err
@@ -124,7 +124,7 @@ async def block_user_func(_, message):
 
 @app2.on_message(
     filters.command("unblock", prefixes=USERBOT_PREFIX)
-    & filters.user(SUDOERS)
+    & SUDOERS
     & ~filters.via_bot
 )
 async def unblock_user_func(_, message):

+ 1 - 1
wbb/modules/quotly.py

@@ -65,7 +65,7 @@ def isArgInt(message: Message) -> list:
 
 
 @app2.on_message(
-    filters.command("q", prefixes=USERBOT_PREFIX) & filters.user(SUDOERS)
+    filters.command("q", prefixes=USERBOT_PREFIX) & SUDOERS
 )
 @app.on_message(filters.command("q") & ~filters.private)
 @capture_err

+ 1 - 1
wbb/modules/reverse.py

@@ -45,7 +45,7 @@ async def get_soup(url: str, headers):
 
 
 @app2.on_message(
-    filters.command("reverse", prefixes=USERBOT_PREFIX) & filters.user(SUDOERS)
+    filters.command("reverse", prefixes=USERBOT_PREFIX) & SUDOERS
 )
 @app.on_message(filters.command("reverse"))
 @capture_err

+ 1 - 1
wbb/modules/stickers.py

@@ -94,7 +94,7 @@ async def sticker_image(_, message: Message):
 
 
 @app2.on_message(
-    filters.command("kang", prefixes=USERBOT_PREFIX) & filters.user(SUDOERS),
+    filters.command("kang", prefixes=USERBOT_PREFIX) & SUDOERS,
 )
 async def userbot_kang(_, message: Message):
     reply = message.reply_to_message

+ 36 - 23
wbb/modules/sudo.py

@@ -46,7 +46,7 @@ can even delete your account.
 
 
 @app2.on_message(
-    filters.command("useradd", prefixes=USERBOT_PREFIX) & filters.user(SUDOERS)
+    filters.command("useradd", prefixes=USERBOT_PREFIX) & SUDOERS
 )
 @capture_err
 async def useradd(_, message: Message):
@@ -58,24 +58,27 @@ async def useradd(_, message: Message):
     user_id = message.reply_to_message.from_user.id
     umention = (await app2.get_users(user_id)).mention
     sudoers = await get_sudoers()
+    
     if user_id in sudoers:
         return await eor(message, text=f"{umention} is already in sudoers.")
     if user_id == BOT_ID:
         return await eor(
             message, text="You can't add assistant bot in sudoers."
         )
-    added = await add_sudo(user_id)
-    if added:
-        await eor(
-            message,
-            text=f"Successfully added {umention} in sudoers, Bot will be restarted now.",
-        )
-        return await restart(None)
-    await eor(message, text="Something wrong happened, check logs.")
+    
+    await add_sudo(user_id)
+    
+    if user_id not in SUDOERS:
+        SUDOERS.add(user_id)
+    
+    await eor(
+        message,
+        text=f"Successfully added {umention} in sudoers.",
+    )
 
 
 @app2.on_message(
-    filters.command("userdel", prefixes=USERBOT_PREFIX) & filters.user(SUDOERS)
+    filters.command("userdel", prefixes=USERBOT_PREFIX) & SUDOERS
 )
 @capture_err
 async def userdel(_, message: Message):
@@ -86,27 +89,37 @@ async def userdel(_, message: Message):
         )
     user_id = message.reply_to_message.from_user.id
     umention = (await app2.get_users(user_id)).mention
+    
     if user_id not in await get_sudoers():
         return await eor(message, text=f"{umention} is not in sudoers.")
-    removed = await remove_sudo(user_id)
-    if removed:
-        await eor(
-            message,
-            text=f"Successfully removed {umention} from sudoers, Bot will be restarted now.",
-        )
-        return await restart(None)
-    await eor(message, text="Something wrong happened, check logs.")
+    
+    await remove_sudo(user_id)
+    
+    if user_id in SUDOERS:
+        SUDOERS.remove(user_id)
+    
+    await eor(
+        message,
+        text=f"Successfully removed {umention} from sudoers.",
+    )
 
 
 @app2.on_message(
-    filters.command("sudoers", prefixes=USERBOT_PREFIX) & filters.user(SUDOERS)
+    filters.command("sudoers", prefixes=USERBOT_PREFIX) & SUDOERS
 )
 @capture_err
 async def sudoers_list(_, message: Message):
     sudoers = await get_sudoers()
     text = ""
-    for count, user_id in enumerate(sudoers, 1):
-        user = await app2.get_users(user_id)
-        user = user.first_name if not user.mention else user.mention
-        text += f"{count}. {user}\n"
+    j = 0
+    for user_id in sudoers:
+        try:
+            user = await app2.get_users(user_id)
+            user = user.first_name if not user.mention else user.mention
+            j += 1
+        except Exception:
+            continue
+        text += f"{j}. {user}\n"
+    if text == "":
+        return await eor(message, text="No sudoers found.")
     await eor(message, text=text)

+ 6 - 6
wbb/modules/sudoers.py

@@ -81,7 +81,7 @@ DISK: {disk}%
 # Gban
 
 
-@app.on_message(filters.command("gban") & filters.user(SUDOERS))
+@app.on_message(filters.command("gban") & SUDOERS)
 @capture_err
 async def ban_globally(_, message):
     user_id, reason = await extract_user_and_reason(message)
@@ -93,8 +93,8 @@ async def ban_globally(_, message):
     if not reason:
         return await message.reply("No reason provided.")
 
-    if user_id in ([from_user.id, BOT_ID] + SUDOERS):
-        return await message.reply_text("No")
+    if user_id in [from_user.id, BOT_ID] or user_id in SUDOERS:
+        return await message.reply_text("I can't ban that user.")
 
     served_chats = await get_served_chats()
     m = await message.reply_text(
@@ -148,7 +148,7 @@ __**New Global Ban**__
 # Ungban
 
 
-@app.on_message(filters.command("ungban") & filters.user(SUDOERS))
+@app.on_message(filters.command("ungban") & SUDOERS)
 @capture_err
 async def unban_globally(_, message):
     user_id = await extract_user(message)
@@ -168,7 +168,7 @@ async def unban_globally(_, message):
 
 
 @app.on_message(
-    filters.command("broadcast") & filters.user(SUDOERS) & ~filters.edited
+    filters.command("broadcast") & SUDOERS & ~filters.edited
 )
 @capture_err
 async def broadcast_message(_, message):
@@ -197,7 +197,7 @@ async def broadcast_message(_, message):
 # Update
 
 
-@app.on_message(filters.command("update") & filters.user(SUDOERS))
+@app.on_message(filters.command("update") & SUDOERS)
 async def update_restart(_, message):
     try:
         out = subprocess.check_output(["git", "pull"]).decode("UTF-8")

+ 2 - 2
wbb/modules/userbot.py

@@ -62,7 +62,7 @@ async def iter_edit(message: Message, text: str):
 
 
 @app2.on_message(
-    filters.user(SUDOERS)
+    SUDOERS
     & ~filters.forwarded
     & ~filters.via_bot
     & filters.command("eval", prefixes=USERBOT_PREFIX)
@@ -154,7 +154,7 @@ async def executor(client, message: Message):
 
 
 @app2.on_message(
-    filters.user(SUDOERS)
+    SUDOERS
     & ~filters.forwarded
     & ~filters.via_bot
     & ~filters.edited