|
|
@@ -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!")
|