TheHamkerCat 5 yıl önce
ebeveyn
işleme
fd445d129e
5 değiştirilmiş dosya ile 58 ekleme ve 72 silme
  1. 4 0
      app.json
  2. 2 0
      sample_config.py
  3. 1 0
      wbb/__init__.py
  4. 34 61
      wbb/modules/admin.py
  5. 17 11
      wbb/modules/nsfw.py

+ 4 - 0
app.json

@@ -62,6 +62,10 @@
         "IMGBB_API_KEY": {
             "description": "Get From Here. https://api.imgbb.com/",
             "required": true
+        },
+        "MESSAGE_DUMP_CHAT": {
+            "description": "Chat_id of the group where useless things will go",
+            "required": true
         }
     }
 }

+ 2 - 0
sample_config.py

@@ -10,6 +10,7 @@ if HEROKU:
     SUDO_USERS_ID = list(int(x) for x in environ.get("SUDO_USERS_ID", "").split())
     LOG_GROUP_ID = int(environ.get("LOG_GROUP_ID", None))
     GBAN_LOG_GROUP_ID = int(environ.get("GBAN_LOG_GROUP_ID", None))
+    MESSAGE_DUMP_CHAT = int(environ.get("MESSAGE_DUMP_CHAT", None))
     FERNET_ENCRYPTION_KEY = environ.get("FERNET_ENCRYPTION_KEY", None)
     WELCOME_DELAY_KICK_SEC = int(environ.get("WELCOME_DELAY_KICK_SEC", None))
     MONGO_DB_URI = environ.get("MONGO_DB_URI", None)
@@ -25,6 +26,7 @@ else:
     SUDO_USERS_ID = [4543744343, 543214651351] # Sudo users have full access to everythin, don't trust anyone
     LOG_GROUP_ID = -100125431255
     GBAN_LOG_GROUP_ID = -100125431255
+    MESSAGE_DUMP_CHAT = -1001181696437
     FERNET_ENCRYPTION_KEY = "iKMq0WZMnJKjMQxZWKtv-cplMuF_LoyshXj0XbTGGWM=" # Leave this as it is
     WELCOME_DELAY_KICK_SEC = 300
     MONGO_DB_URI = "mongodb+srv://username:password@cluster0.ksiis.mongodb.net/YourDataBaseName?retryWrites=true&w=majority"

+ 1 - 0
wbb/__init__.py

@@ -43,6 +43,7 @@ FERNET_ENCRYPTION_KEY = FERNET_ENCRYPTION_KEY
 WELCOME_DELAY_KICK_SEC = WELCOME_DELAY_KICK_SEC
 IMGBB_API_KEY = IMGBB_API_KEY
 LOG_GROUP_ID = LOG_GROUP_ID
+MESSAGE_DUMP_CHAT = MESSAGE_DUMP_CHAT
 MOD_LOAD = []
 MOD_NOLOAD = []
 bot_start_time = time.time()

+ 34 - 61
wbb/modules/admin.py

@@ -171,25 +171,18 @@ async def kick(_, message):
             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 asyncio.sleep(1)
-                await message.chat.unban_member(username)
-                await message.reply_text("Kicked")
+            user_id = (await app.get_users(message.text.split(None, 1)[1])).id
         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 asyncio.sleep(1)
-                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.")
+        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 asyncio.sleep(1)
+            await message.reply_to_message.chat.unban_member(user_id)
+            await message.reply_text("Kicked!")
     except Exception as e:
         print(e)
         await message.reply_text(e)
@@ -208,22 +201,16 @@ async def ban(_, message):
             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("Banned!")
-
+            user_id = (await app.get_users(message.text.split(None, 1)[1])).id
         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.")
+        if user_id in SUDOERS:
+            await message.reply_text("You Wanna Ban The Elevated One?")
+        else:
+            await message.chat.kick_member(user_id)
+            await message.reply_text("Banned!")
     except Exception as e:
         await message.reply_text(str(e))
 
@@ -242,15 +229,13 @@ async def unban(_, message):
             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("Unbanned!")
+            user = message.text.split(None, 1)[1]
         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("Unbanned!")
+            user = message.reply_to_message.from_user.id
         else:
             await message.reply_text("Provide a username or reply to a user's message to unban.")
+        await message.chat.unban_member(user)
+        await message.reply_text("Unbanned!")
     except Exception as e:
         await message.reply_text(str(e))
 
@@ -290,7 +275,7 @@ async def promote(_, message):
         if "can_promote_members" not in permissions and from_user_id not in SUDOERS:
             await message.reply_text("You don't have enough permissions")
             return
-        bot = get_chat_member(chat_id, BOT_ID)
+        bot = await app.get_chat_member(chat_id, BOT_ID)
         if len(message.command) == 2:
             username = message.text.split(None, 1)[1]
             user_id = (await app.get_users(username)).id
@@ -298,13 +283,12 @@ async def promote(_, message):
             user_id = message.reply_to_message.from_user.id
         else:
             await message.reply_text("Reply To A User's Message Or Give A Username To Promote.")
-
         await message.chat.promote_member(
             user_id=user_id,
             can_change_info=bot.can_change_info,
             can_invite_users=bot.can_invite_users,
             can_delete_messages=bot.can_delete_messages,
-            can_restrict_members=bot.can_restrict_members,
+            can_restrict_members=False,
             can_pin_messages=bot.can_pin_messages,
             can_promote_members=bot.can_promote_members,
             can_manage_chat=bot.can_manage_chat,
@@ -350,29 +334,20 @@ async def mute(_, message):
             await message.reply_text("You don't have enough permissions.")
             return
         if len(message.command) == 2:
-            username = message.text.split(None, 1)[1]
-            user_id = (await app.get_users(username)).id
-            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!")
-
+            user_id = (await app.get_users(message.text.split(None, 1)[1])).id
         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 Mute The Elevated One?")
-            else:
-                await message.chat.restrict_member(
-                    user_id,
-                    permissions=ChatPermissions()
-                )
-                await message.reply_text("Muted!")
         else:
             await message.reply_text("Provide a username or reply to a user's message to mute.")
+
+        if user_id in SUDOERS:
+            await message.reply_text("You Wanna Mute The Elevated One?")
+            return
+        await message.chat.restrict_member(
+            user_id,
+            permissions=ChatPermissions()
+        )
+        await message.reply_text("Muted!")
     except Exception as e:
         await message.reply_text(str(e))
 
@@ -390,15 +365,13 @@ async def unmute(_, message):
             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("Unmuted!")
+            user = message.text.split(None, 1)[1]
         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!")
+            user = message.reply_to_message.from_user.id
         else:
             await message.reply_text("Provide a username or reply to a user's message to Unmute")
+        await message.chat.unban_member(user)
+        await message.reply_text("Unmuted!")
     except Exception as e:
         await message.reply_text(str(e))
 

+ 17 - 11
wbb/modules/nsfw.py

@@ -1,4 +1,4 @@
-from wbb import app, arq, SUDOERS, IMGBB_API_KEY
+from wbb import app, arq, SUDOERS, IMGBB_API_KEY, MESSAGE_DUMP_CHAT
 from wbb.utils.filter_groups import nsfw_detect_group
 from pyrogram import filters
 from random import randint
@@ -9,6 +9,8 @@ import os
 
 @app.on_message(filters.document | filters.photo & ~filters.private, group=nsfw_detect_group)
 async def detect_nsfw(_, message):
+    if message.from_user.id in SUDOERS:
+        return
     if message.document:
         if int(message.document.file_size) > 3145728:
             return
@@ -18,10 +20,10 @@ async def detect_nsfw(_, message):
     image = await message.download(f"{randint(6666, 9999)}.jpg")
     async with aiofiles.open(image, mode='rb') as f:
         payload = {
-        "key": IMGBB_API_KEY,
-        "image": await f.read(),
-        "expiration": "60"
-    }
+            "key": IMGBB_API_KEY,
+            "image": await f.read(),
+            "expiration": "60"
+        }
     async with aiohttp.ClientSession() as session:
         async with session.post("https://api.imgbb.com/1/upload", data=payload) as resp:
             data = await resp.json()
@@ -36,16 +38,20 @@ async def detect_nsfw(_, message):
         return
     if neutral > 30:
         return
-    await message.delete()
     user_mention = message.from_user.mention
     user_id = message.from_user.id
+    m = await message.forward(MESSAGE_DUMP_CHAT)
+    try:
+        await message.delete()
+    except Exception:
+        pass
     await message.reply_text(f"""
-**NSFW Image Detected & Deleted Successfully!
+**NSFW [Image]({m.link}) Detected & Deleted Successfully!
 ————————————————————————**
 
 **User:** {user_mention} [`{user_id}`]
-**Safe:** `{neutral}`
-**Porn:** `{porn}`
-**Adult:** `{sexy}`
-**Hentai:** `{hentai}`
+**Safe:** `{neutral}` %
+**Porn:** `{porn}` %
+**Adult:** `{sexy}` %
+**Hentai:** `{hentai}` %
 """)