Explorar el Código

Added some more commands (#22)

* Added /del and /http

* Added /promote /demote

* Added /pin and /unpin 

* Added /random
TheHamkerCat hace 5 años
padre
commit
ae41b712bd

+ 7 - 0
commands.txt

@@ -4,18 +4,24 @@ ban - Ban A User
 banme - Ban Yourself
 cat - Get Cute Cats Images
 commit - Generate Funny Commit Messages
+del - Delete Replied Message
+demote - Demote A Member
 dev - Forward Anything To Developers [SPAM = GBAN]
 dog - Get Cute Dogs Images
 help - Help Yourself!
+http - Get Cats Reference Photo For Http Error Codes
 id - Get Chat_ID or User_ID
 kick - Kick A User
 kickme - Kick Yourself
 log - Get Logs From Last Run.
 music - [link] To Download Music From Various Websites
 paste - Paste To Neokobin
+pin - Pin The Replied Message
 ping - Get Response Time From All TG Datacenters
+promote - Promote A Member
 purge - Purge Messages
 quote - Get Random Linux Quotes
+random - Generate Random Complex Passwords
 repo - Get My Github Repository Link And Support Group Link
 rice - Forward Your Linux Rice To DE_WM'sRice Gallery only works in DE_WM
 runs - Idk Test Yourself
@@ -23,4 +29,5 @@ start - Start The Bot
 speedtest - To Perform A Speedtest.
 stats  - To Check System Status.
 unban - Unban A User
+unpin - Unpin The Last Pinned Message.
 wall - Get Wallpapers

+ 197 - 16
wbb/modules/admin.py

@@ -1,14 +1,21 @@
+from pyrogram import filters
 from pyrogram.types import Message
 from wbb import OWNER_ID, SUDO_USER_ID, app
 from wbb.utils import cust_filter
+from wbb.utils.botinfo import BOT_ID
 
 __MODULE__ = "Admin"
-__HELP__ = "/ban    - Ban A User\n" \
-           "/unban  - Unban A User\n" \
-           "/kick   - Kick A User\n" \
-           "/purge  - Purge Messages\n" \
-           "/banme  - Bans A User Who Issued The Command\n" \
-           "/kickme - Kicks A User Who Issued The Command"
+__HELP__ = '''/ban    - Ban A User
+/unban  - Unban A User
+/kick   - Kick A User
+/purge  - Purge Messages
+/del    - Delete Replied Message
+/banme  - Bans A User Who Issued The Command
+/kickme - Kicks A User Who Issued The Command
+/demote - Demote A Member
+/promote - Promote A Member
+/pin - Pin A Message
+/unpin - Unpin A Message'''
 
 SUDO = [OWNER_ID, SUDO_USER_ID]
 
@@ -34,7 +41,7 @@ async def list_members(group_id):
 # Purge Messages
 
 
-@app.on_message(cust_filter.command(commands=("purge")))
+@app.on_message(cust_filter.command(commands=("purge")) & ~filters.edited)
 async def purge(client, message: Message):
     message_ids = []
     if message.chat.type not in ("supergroup", "channel"):
@@ -72,17 +79,19 @@ async def purge(client, message: Message):
                         message_ids=message_ids,
                         revoke=True
                     )
-
             else:
                 await message.reply_text(
                     "Reply To A Message To Delete It,"
                     " Don't Make Fun Of Yourself!")
+    else:
+        await message.reply_text("Your Don't Have Enough Permissions!")
+    await message.delete()
 
 
 # Kick members
 
 
-@app.on_message(cust_filter.command(commands=("kick")))
+@app.on_message(cust_filter.command(commands=("kick")) & ~filters.edited)
 async def kick(_, message: Message):
     try:
         username = (message.text.split(None, 2)[1])
@@ -105,7 +114,7 @@ async def kick(_, message: Message):
                     await message.reply_text(f"Kicked {username}")
                 else:
                     await message.reply_text("This user isn't here,"
-                                             " don't bully me!")
+                                             " consider kicking yourself.")
 
         else:
             if username in SUDO or message.reply_to_message.from_user.id \
@@ -120,12 +129,12 @@ async def kick(_, message: Message):
                     await message.reply_text(f"Kicked {username}")
                 else:
                     await message.reply_text("This user isn't here,"
-                                             " don't bully me!")
+                                             " consider kicking yourself.")
 
 # Ban members
 
 
-@app.on_message(cust_filter.command(commands=("ban")))
+@app.on_message(cust_filter.command(commands=("ban")) & ~filters.edited)
 async def ban(_, message: Message):
     try:
         username = (message.text.split(None, 2)[1])
@@ -147,7 +156,7 @@ async def ban(_, message: Message):
                     await message.reply_text(f"Banned {username}")
                 else:
                     await message.reply_text("This user isn't here,"
-                                             " don't bully me!")
+                                             " consider banning yourself.")
         else:
             if username in SUDO or message.reply_to_message.from_user.id \
                     in SUDO:
@@ -160,12 +169,12 @@ async def ban(_, message: Message):
                     await message.reply_text(f"Banned {username}")
                 else:
                     await message.reply_text("This user isn't here,"
-                                             " don't bully me!")
+                                             " consider kicking yourself.")
 
 # Unban members
 
 
-@app.on_message(cust_filter.command(commands=("unban")))
+@app.on_message(cust_filter.command(commands=("unban")) & ~filters.edited)
 async def unban(_, message: Message):
     try:
         username = (message.text.split(None, 2)[1])
@@ -198,7 +207,7 @@ async def unban(_, message: Message):
 # Kick members on their own call
 
 
-@app.on_message(cust_filter.command(commands=("kickme")))
+@app.on_message(cust_filter.command(commands=("kickme")) & ~filters.edited)
 async def kickme(_, message: Message):
     if message.from_user.id not in SUDO:
         await message.chat.kick_member(message.from_user.id)
@@ -217,3 +226,175 @@ async def banme(_, message: Message):
         await message.reply_text("Banned!, Joke's on you, I'm into that shit!")
     else:
         await message.reply_text("It doesn't works that way mate.")
+
+# Delete messages
+
+
+@app.on_message(cust_filter.command(commands=("del")))
+async def delete(_, message: Message):
+    admins = await list_admins(message.chat.id)
+    chat_id = message.chat.id
+    from_user_id = message.from_user.id
+
+    if message.from_user.id in admins \
+            or message.from_user.id in SUDO:
+        if (await app.get_chat_member(chat_id,
+                                      from_user_id)).can_delete_messages \
+            or (await app.get_chat_member(chat_id, from_user_id)).status \
+            == 'creator' \
+                or message.from_user.id in SUDO:
+            await message.reply_to_message.delete()
+            await message.delete()
+    else:
+        await message.reply_text("You Don't Have Enough Permissions,"
+                                 + " Consider Deleting Yourself!")
+
+# Promote Members
+
+
+@app.on_message(cust_filter.command(commands=("promote")) & ~filters.edited)
+async def promote(_, message: Message):
+    admins = await list_admins(message.chat.id)
+    chat_id = message.chat.id
+    from_user_id = message.from_user.id
+
+    if (await app.get_chat_member(chat_id,
+                                  BOT_ID)).can_promote_members:
+        if message.from_user.id in admins \
+                or message.from_user.id in SUDO:
+            if (await app.get_chat_member(chat_id,
+                                          from_user_id)).can_promote_members \
+                or (await app.get_chat_member(chat_id, from_user_id)).status \
+                == 'creator' \
+                    or message.from_user.id in SUDO:
+
+                if message.text != '/promote':
+                    username = message.text.replace('/promote', '')
+                    user_id = (await app.get_users(username)).id
+                    await message.chat.promote_member(
+                        user_id=user_id,
+                        can_change_info=True,
+                        can_invite_users=True,
+                        can_restrict_members=True,
+                        can_delete_messages=True,
+                        can_pin_messages=True,
+                        can_promote_members=True)
+                    await message.reply_text('Promoted!')
+
+                else:
+                    user_id = message.reply_to_message.from_user.id
+                    await message.chat.promote_member(
+                        user_id=user_id,
+                        can_change_info=True,
+                        can_invite_users=True,
+                        can_restrict_members=True,
+                        can_delete_messages=True,
+                        can_pin_messages=True,
+                        can_promote_members=True)
+                    await message.reply_text('Promoted!')
+
+            else:
+                await message.reply_text("Yeah, I Can See You're An Admin,"
+                                         + " But You Don't Have Permissions"
+                                         + " To Promote Someone.")
+        else:
+            await message.reply_text("You're Not An Admin, Want A Good Ban?")
+    else:
+        await message.reply_text("Well, Your Know What?, I'M NOT AN ADMIN!"
+                                 + " MAKE ME ADMIN!")
+
+# Demote Members
+
+
+@app.on_message(cust_filter.command(commands=("demote")) & ~filters.edited)
+async def demote(_, message: Message):
+    admins = await list_admins(message.chat.id)
+    chat_id = message.chat.id
+    from_user_id = message.from_user.id
+
+    if (await app.get_chat_member(chat_id,
+                                  BOT_ID)).can_promote_members:
+        if message.from_user.id in admins \
+                or message.from_user.id in SUDO:
+            if (await app.get_chat_member(chat_id,
+                                          from_user_id)).can_promote_members \
+                or (await app.get_chat_member(chat_id, from_user_id)).status \
+                == 'creator' \
+                    or message.from_user.id in SUDO:
+
+                if message.text != '/demote':
+                    username = message.text.replace('/demote', '')
+                    user_id = (await app.get_users(username)).id
+                    await message.chat.promote_member(
+                        user_id=user_id,
+                        can_change_info=False,
+                        can_invite_users=False,
+                        can_restrict_members=False,
+                        can_delete_messages=False,
+                        can_pin_messages=False,
+                        can_promote_members=False)
+                    await message.reply_text('Promoted!')
+
+                else:
+                    user_id = message.reply_to_message.from_user.id
+                    await message.chat.promote_member(
+                        user_id=user_id,
+                        can_change_info=False,
+                        can_invite_users=False,
+                        can_restrict_members=False,
+                        can_delete_messages=False,
+                        can_pin_messages=False,
+                        can_promote_members=False)
+                    await message.reply_text('Demoted!')
+
+            else:
+                await message.reply_text("Yeah, I Can See You're An Admin,"
+                                         + " But You Don't Have Permissions"
+                                         + " To Demote Someone.")
+        else:
+            await message.reply_text("You're Not An Admin, Want A Good Ban?")
+    else:
+        await message.reply_text("Well, Your Know What?, I'M NOT AN ADMIN!"
+                                 + " MAKE ME ADMIN!")
+
+# Pin Messages
+
+
+@app.on_message(cust_filter.command(commands=("pin")) & ~filters.edited)
+async def pin(_, message: Message):
+    admins = await list_admins(message.chat.id)
+    chat_id = message.chat.id
+    from_user_id = message.from_user.id
+
+    if message.from_user.id in admins \
+            or message.from_user.id in SUDO:
+        if (await app.get_chat_member(chat_id,
+                                      from_user_id)).can_pin_messages \
+            or (await app.get_chat_member(chat_id, from_user_id)).status \
+            == 'creator' \
+                or message.from_user.id in SUDO:
+
+            await message.reply_to_message.pin()
+    else:
+        await message.reply_text("You're Not An Admin, Stop Spamming!")
+
+# Unpin Messages
+
+
+@app.on_message(cust_filter.command(commands=("unpin")) & ~filters.edited)
+async def unpin(_, message: Message):
+    admins = await list_admins(message.chat.id)
+    chat_id = message.chat.id
+    from_user_id = message.from_user.id
+
+    if message.from_user.id in admins \
+            or message.from_user.id in SUDO:
+        if (await app.get_chat_member(chat_id,
+                                      from_user_id)).can_pin_messages \
+            or (await app.get_chat_member(chat_id, from_user_id)).status \
+            == 'creator' \
+                or message.from_user.id in SUDO:
+
+            await app.unpin_chat_message(chat_id)
+    else:
+        await message.reply_text("You're Not An Admin, Stop Spamming!")

+ 12 - 7
wbb/modules/images.py

@@ -6,11 +6,12 @@ import requests as r
 from pyrogram.types import Message
 from wbb.utils import cust_filter
 from wbb import app, WALL_API_KEY
+from pyrogram import filters
 
 __MODULE__ = "Images"
-__HELP__ = "/cat - Get Cute Cats Images\n" + \
-           "/dog - Get Cute Dogs Images\n" + \
-           "/wall [something] - Get Wallpapers"
+__HELP__ = '''/cat  - Get Cute Cats Images
+/dog  - Get Cute Dogs Images
+/wall - Get Wallpapers'''
 
 
 async def delete_message_with_delay(delay, message: Message):
@@ -18,7 +19,7 @@ async def delete_message_with_delay(delay, message: Message):
     await message.delete()
 
 
-@app.on_message(cust_filter.command(commands=("cat")))
+@app.on_message(cust_filter.command(commands=("cat")) & ~filters.edited)
 async def cat(_, message: Message):
     with urllib.request.urlopen(
         "https://api.thecatapi.com/v1/images/search"
@@ -28,7 +29,7 @@ async def cat(_, message: Message):
     await message.reply_photo(cat_url)
 
 
-@app.on_message(cust_filter.command(commands=("dog")))
+@app.on_message(cust_filter.command(commands=("dog")) & ~filters.edited)
 async def dog(_, message: Message):
     with urllib.request.urlopen(
         "https://api.thedogapi.com/v1/images/search"
@@ -38,7 +39,7 @@ async def dog(_, message: Message):
     await message.reply_photo(dog_url)
 
 
-@app.on_message(cust_filter.command(commands=("wall")))
+@app.on_message(cust_filter.command(commands=("wall")) & ~filters.edited)
 async def wall(_, message: Message):
     app.set_parse_mode("markdown")
     m = await message.reply_text("Searching!")
@@ -56,7 +57,11 @@ async def wall(_, message: Message):
             await m.edit("Found literally nothing!,"
                          + "You should work on your English.")
             return
-        index = randint(0, len(wallpapers) - 1)
+        if len(wallpapers) > 10:
+            selection = 10
+        else:
+            selection = len(wallpapers)
+        index = randint(0, selection - 1)
         wallpaper = wallpapers[index]
         wallpaper = wallpaper.get("url_image")
         wallpaper = wallpaper.replace("\\", "")

+ 71 - 22
wbb/modules/misc.py

@@ -1,31 +1,38 @@
+import secrets
+import string
+from wbb.utils.botinfo import BOT_ID
 from pyrogram.types import Message
 from wbb import app
 from wbb.utils import cust_filter, random_line
+from pyrogram import filters
+
 
 __MODULE__ = "Misc"
-__HELP__ = "/commit - Generate Funny Commit Messages\n" \
-           "/runs - Idk Test Yourself\n" \
-           "/quote - Get Random Linux Quotes\n" \
-           "/id - Get Chat_ID or User_ID\n" \
-           "/dev - Forward Anything To Developers [SPAM = GBAN]"
+__HELP__ = '''/commit - Generate Funny Commit Messages
+/runs  - Idk Test Yourself
+/quote - Get Random Linux Quotes
+/id - Get Chat_ID or User_ID
+/dev - Forward Anything To Developers [SPAM = GBAN]
+/random - Generate Random Complex Passwords
+/http - Get Cats Reference Photo For Http Error Codes'''
 
 
-@app.on_message(cust_filter.command(commands=("commit")))
+@app.on_message(cust_filter.command(commands=("commit")) & ~filters.edited)
 async def commit(_, message: Message):
     await message.reply_text((await random_line('wbb/utils/commit.txt')))
 
 
-@app.on_message(cust_filter.command(commands=("runs")))
+@app.on_message(cust_filter.command(commands=("runs")) & ~filters.edited)
 async def runs(_, message: Message):
     await message.reply_text((await random_line('wbb/utils/runs.txt')))
 
 
-@app.on_message(cust_filter.command(commands=("quote")))
+@app.on_message(cust_filter.command(commands=("quote")) & ~filters.edited)
 async def quote(_, message: Message):
     await message.reply_text((await random_line('wbb/utils/quotes.txt')))
 
 
-@app.on_message(cust_filter.command(commands=("id")))
+@app.on_message(cust_filter.command(commands=("id")) & ~filters.edited)
 async def get_id(_, message: Message):
     app.set_parse_mode("markdown")
     if message.text != '/id':
@@ -46,18 +53,60 @@ async def get_id(_, message: Message):
         await message.reply_text(msg)
 
 
-@app.on_message(cust_filter.command(commands=("dev")))
+@app.on_message(cust_filter.command(commands=("dev")) & ~filters.edited)
 async def dev(_, message: Message):
     app.set_parse_mode("markdown")
-    await message.reply_to_message.forward('WBBSupport')
-    await app.send_message("WBBSupport",
-                           "Forwarded By: `{}` | {}\n"
-                           "Forwarded From: `{}` | {}"
-                           .format(message.from_user.id,
-                                   message.from_user.mention,
-                                   message.chat.id,
-                                   message.chat.title))
-    await message.reply_text("Your Message Has Been Forward To Devs,"
-                             + " Any Missuse Of This Feature Will Not"
-                             + " Be Tolerated And You Will Be"
-                             + " Gbanned instantaneously!")
+    if (await app.get_chat_member(
+            message.chat.id,
+            BOT_ID)).can_restrict_members:
+
+        await message.reply_to_message.forward('WBBSupport')
+        await app.send_message("WBBSupport",
+                               "Forwarded By: `{}` | {}\n"
+                               "Forwarded From: `{}` | {}"
+                               .format(message.from_user.id,
+                                       message.from_user.mention,
+                                       message.chat.id,
+                                       message.chat.title))
+        await message.reply_text("Your Message Has Been Forward To Devs,"
+                                 + " Any Missuse Of This Feature Will Not"
+                                 + " Be Tolerated And You Will Be"
+                                 + " Gbanned instantaneously!")
+    else:
+        await message.reply_text("To Use This Feature You Have To Make Me"
+                                 + " Admin")
+# Password
+
+
+@app.on_message(cust_filter.command(commands=('random')) & ~filters.edited)
+async def random(_, message: Message):
+    app.set_parse_mode('markdown')
+    if message.text != "/random":
+        length = message.text.replace('/random', '')
+        try:
+            if 1 < int(length) < 1000:
+                alphabet = string.ascii_letters + string.digits
+                password = ''.join(secrets.choice(alphabet) for i in
+                                   range(int(length)))
+                await message.reply_text(f"`{password}`")
+            else:
+                await message.reply_text('Specify A Length Between 1-1000')
+        except ValueError:
+            await message.reply_text("Strings Won't Work!, Pass A"
+                                     + " Positive Integer Between 1-1000")
+    else:
+        await message.reply_text('"/random" Needs An Argurment.'
+                                 ' Ex: `/random 5`')
+
+# http cat search
+
+
+@app.on_message(cust_filter.command(commands=('http')) & ~filters.edited)
+async def http(_, message: Message):
+    if message.text != "/http":
+        code = message.text.replace('/http', '')
+        url = f"https://http.cat/{code}"
+        final = url.replace(' ', '')
+        await message.reply_photo(final)
+    else:
+        await message.reply_text('"/http" Needs An Argument. Ex: `/http 404`')

+ 2 - 1
wbb/modules/music.py

@@ -5,6 +5,7 @@ import youtube_dl
 from pyrogram.types import Message
 from wbb.utils import cust_filter
 from wbb import app
+from pyrogram import filters
 
 __MODULE__ = "Music"
 __HELP__ = "/music [link] To Download Music From Various Websites"
@@ -15,7 +16,7 @@ ydl_opts = {
 }
 
 
-@app.on_message(cust_filter.command(commands=("music")))
+@app.on_message(cust_filter.command(commands=("music")) & ~filters.edited)
 async def music(_, message: Message):
     await message.reply_chat_action("typing")
     app.set_parse_mode("html")

+ 2 - 2
wbb/modules/paste.py

@@ -2,13 +2,13 @@ import os
 from pyrogram.types import Message
 from wbb.utils import cust_filter, nekobin
 from wbb import app
-
+from pyrogram import filters
 
 __MODULE__ = "Paste"
 __HELP__ = "/paste - To Paste Replied Text Or Document To Neokobin"
 
 
-@app.on_message(cust_filter.command(commands=("paste")))
+@app.on_message(cust_filter.command(commands=("paste")) & ~filters.edited)
 async def paste(_, message: Message):
     if bool(message.reply_to_message) is True:
         app.set_parse_mode("markdown")

+ 2 - 2
wbb/modules/ping.py

@@ -2,12 +2,12 @@ import requests
 from pyrogram.types import Message
 from wbb import app
 from wbb.utils import cust_filter
-
+from pyrogram import filters
 __MODULE__ = "Ping"
 __HELP__ = " /ping - To Get Response Time From All TG Datacenters"
 
 
-@app.on_message(cust_filter.command(commands=("ping")))
+@app.on_message(cust_filter.command(commands=("ping")) & ~filters.edited)
 async def ping(_, message: Message):
     app.set_parse_mode("markdown")
     j = await message.reply_text("Wait, Pinging all Datacenters`")

+ 3 - 3
wbb/modules/repo.py

@@ -1,14 +1,14 @@
 from pyrogram.types import Message
 from wbb import app
 from wbb.utils import cust_filter
-
+from pyrogram import filters
 
 __MODULE__ = "Repo"
-__HELP__ = "/repo - To Get My Github Repository Link " + \
+__HELP__ = "/repo - To Get My Github Repository Link " \
            "And Support Group Link"
 
 
-@app.on_message(cust_filter.command(commands=("repo")))
+@app.on_message(cust_filter.command(commands=("repo")) & ~filters.edited)
 async def repo(_, message: Message):
     app.set_parse_mode("markdown")
     await message.reply_text(

+ 3 - 4
wbb/modules/sudoers.py

@@ -9,11 +9,10 @@ from wbb.utils import cust_filter, nekobin, formatter
 from wbb import app, OWNER_ID, SUDO_USER_ID, bot_start_time, NEOFETCH
 
 __MODULE__ = "Sudoers"
-__HELP__ = '''
-/log - To Get Logs From Last Run.
+__HELP__ = '''/log - To Get Logs From Last Run.
 /speedtest - To Perform A Speedtest.
-/stats - To Check System Status.
-'''
+/stats - To Check System Status.'''
+
 
 SUDOERS = [OWNER_ID, SUDO_USER_ID]
 

+ 2 - 1
wbb/utils/runs.txt

@@ -12,4 +12,5 @@ What Am I? Friend or Foe? Bot or Hoe?, No one knows!
 Yeah! I was born to run.
 Ok....But, does your code runs?
 Yeah they always say that, but their code never runs!
-Yeah, I'm currently running on debian!
+Yeah, I'm currently running on debian!
+Run Barry, RUN!