|
@@ -29,7 +29,13 @@ from time import time
|
|
|
from pyrogram import filters
|
|
from pyrogram import filters
|
|
|
from pyrogram.enums import ChatMembersFilter, ChatType
|
|
from pyrogram.enums import ChatMembersFilter, ChatType
|
|
|
from pyrogram.errors import FloodWait
|
|
from pyrogram.errors import FloodWait
|
|
|
-from pyrogram.types import CallbackQuery, ChatMemberUpdated, ChatPermissions, ChatPrivileges, Message
|
|
|
|
|
|
|
+from pyrogram.types import (
|
|
|
|
|
+ CallbackQuery,
|
|
|
|
|
+ ChatMemberUpdated,
|
|
|
|
|
+ ChatPermissions,
|
|
|
|
|
+ ChatPrivileges,
|
|
|
|
|
+ Message,
|
|
|
|
|
+)
|
|
|
|
|
|
|
|
from wbb import BOT_ID, SUDOERS, app, log
|
|
from wbb import BOT_ID, SUDOERS, app, log
|
|
|
from wbb.core.decorators.errors import capture_err
|
|
from wbb.core.decorators.errors import capture_err
|
|
@@ -41,7 +47,11 @@ from wbb.utils.dbfunctions import (
|
|
|
remove_warns,
|
|
remove_warns,
|
|
|
save_filter,
|
|
save_filter,
|
|
|
)
|
|
)
|
|
|
-from wbb.utils.functions import extract_user, extract_user_and_reason, time_converter
|
|
|
|
|
|
|
+from wbb.utils.functions import (
|
|
|
|
|
+ extract_user,
|
|
|
|
|
+ extract_user_and_reason,
|
|
|
|
|
+ time_converter,
|
|
|
|
|
+)
|
|
|
|
|
|
|
|
__MODULE__ = "Admin"
|
|
__MODULE__ = "Admin"
|
|
|
__HELP__ = """/ban - Ban A User
|
|
__HELP__ = """/ban - Ban A User
|
|
@@ -198,7 +208,9 @@ async def kickFunc(_, message: Message):
|
|
|
if not user_id:
|
|
if not user_id:
|
|
|
return await message.reply_text("I can't find that user.")
|
|
return await message.reply_text("I can't find that user.")
|
|
|
if user_id == BOT_ID:
|
|
if user_id == BOT_ID:
|
|
|
- return await message.reply_text("I can't kick myself, i can leave if you want.")
|
|
|
|
|
|
|
+ return await message.reply_text(
|
|
|
|
|
+ "I can't kick myself, i can leave if you want."
|
|
|
|
|
+ )
|
|
|
if user_id in SUDOERS:
|
|
if user_id in SUDOERS:
|
|
|
return await message.reply_text("You Wanna Kick The Elevated One?")
|
|
return await message.reply_text("You Wanna Kick The Elevated One?")
|
|
|
if user_id in (await list_admins(message.chat.id)):
|
|
if user_id in (await list_admins(message.chat.id)):
|
|
@@ -229,9 +241,13 @@ async def banFunc(_, message: Message):
|
|
|
if not user_id:
|
|
if not user_id:
|
|
|
return await message.reply_text("I can't find that user.")
|
|
return await message.reply_text("I can't find that user.")
|
|
|
if user_id == BOT_ID:
|
|
if user_id == BOT_ID:
|
|
|
- return await message.reply_text("I can't ban myself, i can leave if you want.")
|
|
|
|
|
|
|
+ return await message.reply_text(
|
|
|
|
|
+ "I can't ban myself, i can leave if you want."
|
|
|
|
|
+ )
|
|
|
if user_id in SUDOERS:
|
|
if user_id in SUDOERS:
|
|
|
- return await message.reply_text("You Wanna Ban The Elevated One?, RECONSIDER!")
|
|
|
|
|
|
|
+ return await message.reply_text(
|
|
|
|
|
+ "You Wanna Ban The Elevated One?, RECONSIDER!"
|
|
|
|
|
+ )
|
|
|
if user_id in (await list_admins(message.chat.id)):
|
|
if user_id in (await list_admins(message.chat.id)):
|
|
|
return await message.reply_text(
|
|
return await message.reply_text(
|
|
|
"I can't ban an admin, You know the rules, so do i."
|
|
"I can't ban an admin, You know the rules, so do i."
|
|
@@ -311,8 +327,12 @@ async def list_ban_(c, message: Message):
|
|
|
return await message.reply_text(
|
|
return await message.reply_text(
|
|
|
"Provide a userid/username along with message link and reason to list-ban"
|
|
"Provide a userid/username along with message link and reason to list-ban"
|
|
|
)
|
|
)
|
|
|
- if len(msglink_reason.split(" ")) == 1: # message link included with the reason
|
|
|
|
|
- return await message.reply_text("You must provide a reason to list-ban")
|
|
|
|
|
|
|
+ if (
|
|
|
|
|
+ len(msglink_reason.split(" ")) == 1
|
|
|
|
|
+ ): # message link included with the reason
|
|
|
|
|
+ return await message.reply_text(
|
|
|
|
|
+ "You must provide a reason to list-ban"
|
|
|
|
|
+ )
|
|
|
# seperate messge link from reason
|
|
# seperate messge link from reason
|
|
|
lreason = msglink_reason.split()
|
|
lreason = msglink_reason.split()
|
|
|
messagelink, reason = lreason[0], " ".join(lreason[1:])
|
|
messagelink, reason = lreason[0], " ".join(lreason[1:])
|
|
@@ -325,7 +345,9 @@ async def list_ban_(c, message: Message):
|
|
|
if userid == BOT_ID:
|
|
if userid == BOT_ID:
|
|
|
return await message.reply_text("I can't ban myself.")
|
|
return await message.reply_text("I can't ban myself.")
|
|
|
if userid in SUDOERS:
|
|
if userid in SUDOERS:
|
|
|
- return await message.reply_text("You Wanna Ban The Elevated One?, RECONSIDER!")
|
|
|
|
|
|
|
+ return await message.reply_text(
|
|
|
|
|
+ "You Wanna Ban The Elevated One?, RECONSIDER!"
|
|
|
|
|
+ )
|
|
|
splitted = messagelink.split("/")
|
|
splitted = messagelink.split("/")
|
|
|
uname, mid = splitted[-2], int(splitted[-1])
|
|
uname, mid = splitted[-2], int(splitted[-1])
|
|
|
m = await message.reply_text(
|
|
m = await message.reply_text(
|
|
@@ -370,7 +392,9 @@ async def list_unban_(c, message: Message):
|
|
|
"Provide a userid/username along with message link to list-unban"
|
|
"Provide a userid/username along with message link to list-unban"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
- if not re.search(r"(https?://)?t(elegram)?\.me/\w+/\d+", msglink): # validate link
|
|
|
|
|
|
|
+ if not re.search(
|
|
|
|
|
+ r"(https?://)?t(elegram)?\.me/\w+/\d+", msglink
|
|
|
|
|
+ ): # validate link
|
|
|
return await message.reply_text("Invalid message link provided")
|
|
return await message.reply_text("Invalid message link provided")
|
|
|
|
|
|
|
|
splitted = msglink.split("/")
|
|
splitted = msglink.split("/")
|
|
@@ -532,7 +556,9 @@ async def mute(_, message: Message):
|
|
|
if user_id == BOT_ID:
|
|
if user_id == BOT_ID:
|
|
|
return await message.reply_text("I can't mute myself.")
|
|
return await message.reply_text("I can't mute myself.")
|
|
|
if user_id in SUDOERS:
|
|
if user_id in SUDOERS:
|
|
|
- return await message.reply_text("You wanna mute the elevated one?, RECONSIDER!")
|
|
|
|
|
|
|
+ return await message.reply_text(
|
|
|
|
|
+ "You wanna mute the elevated one?, RECONSIDER!"
|
|
|
|
|
+ )
|
|
|
if user_id in (await list_admins(message.chat.id)):
|
|
if user_id in (await list_admins(message.chat.id)):
|
|
|
return await message.reply_text(
|
|
return await message.reply_text(
|
|
|
"I can't mute an admin, You know the rules, so do i."
|
|
"I can't mute an admin, You know the rules, so do i."
|
|
@@ -618,9 +644,13 @@ async def warn_user(_, message: Message):
|
|
|
if not user_id:
|
|
if not user_id:
|
|
|
return await message.reply_text("I can't find that user.")
|
|
return await message.reply_text("I can't find that user.")
|
|
|
if user_id == BOT_ID:
|
|
if user_id == BOT_ID:
|
|
|
- return await message.reply_text("I can't warn myself, i can leave if you want.")
|
|
|
|
|
|
|
+ return await message.reply_text(
|
|
|
|
|
+ "I can't warn myself, i can leave if you want."
|
|
|
|
|
+ )
|
|
|
if user_id in SUDOERS:
|
|
if user_id in SUDOERS:
|
|
|
- return await message.reply_text("You Wanna Warn The Elevated One?, RECONSIDER!")
|
|
|
|
|
|
|
+ return await message.reply_text(
|
|
|
|
|
+ "You Wanna Warn The Elevated One?, RECONSIDER!"
|
|
|
|
|
+ )
|
|
|
if user_id in (await list_admins(chat_id)):
|
|
if user_id in (await list_admins(chat_id)):
|
|
|
return await message.reply_text(
|
|
return await message.reply_text(
|
|
|
"I can't warn an admin, You know the rules, so do i."
|
|
"I can't warn an admin, You know the rules, so do i."
|
|
@@ -639,7 +669,9 @@ async def warn_user(_, message: Message):
|
|
|
await message.reply_to_message.delete()
|
|
await message.reply_to_message.delete()
|
|
|
if warns >= 2:
|
|
if warns >= 2:
|
|
|
await message.chat.ban_member(user_id)
|
|
await message.chat.ban_member(user_id)
|
|
|
- await message.reply_text(f"Number of warns of {mention} exceeded, BANNED!")
|
|
|
|
|
|
|
+ await message.reply_text(
|
|
|
|
|
+ f"Number of warns of {mention} exceeded, BANNED!"
|
|
|
|
|
+ )
|
|
|
await remove_warns(chat_id, await int_to_alpha(user_id))
|
|
await remove_warns(chat_id, await int_to_alpha(user_id))
|
|
|
else:
|
|
else:
|
|
|
warn = {"warns": warns + 1}
|
|
warn = {"warns": warns + 1}
|
|
@@ -723,17 +755,24 @@ async def check_warns(_, message: Message):
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.on_message(
|
|
@app.on_message(
|
|
|
- (filters.command("report") | filters.command(["admins", "admin"], prefixes="@"))
|
|
|
|
|
|
|
+ (
|
|
|
|
|
+ filters.command("report")
|
|
|
|
|
+ | filters.command(["admins", "admin"], prefixes="@")
|
|
|
|
|
+ )
|
|
|
& ~filters.private
|
|
& ~filters.private
|
|
|
)
|
|
)
|
|
|
@capture_err
|
|
@capture_err
|
|
|
async def report_user(_, message):
|
|
async def report_user(_, message):
|
|
|
if not message.reply_to_message:
|
|
if not message.reply_to_message:
|
|
|
- return await message.reply_text("Reply to a message to report that user.")
|
|
|
|
|
|
|
+ return await message.reply_text(
|
|
|
|
|
+ "Reply to a message to report that user."
|
|
|
|
|
+ )
|
|
|
|
|
|
|
|
reply = message.reply_to_message
|
|
reply = message.reply_to_message
|
|
|
reply_id = reply.from_user.id if reply.from_user else reply.sender_chat.id
|
|
reply_id = reply.from_user.id if reply.from_user else reply.sender_chat.id
|
|
|
- user_id = message.from_user.id if message.from_user else message.sender_chat.id
|
|
|
|
|
|
|
+ user_id = (
|
|
|
|
|
+ message.from_user.id if message.from_user else message.sender_chat.id
|
|
|
|
|
+ )
|
|
|
if reply_id == user_id:
|
|
if reply_id == user_id:
|
|
|
return await message.reply_text("Why are you reporting yourself ?")
|
|
return await message.reply_text("Why are you reporting yourself ?")
|
|
|
|
|
|
|
@@ -758,9 +797,12 @@ async def report_user(_, message):
|
|
|
reply.from_user.mention if reply.from_user else reply.sender_chat.title
|
|
reply.from_user.mention if reply.from_user else reply.sender_chat.title
|
|
|
)
|
|
)
|
|
|
text = f"Reported {user_mention} to admins!"
|
|
text = f"Reported {user_mention} to admins!"
|
|
|
- admin_data = await app.get_chat_members(
|
|
|
|
|
- chat_id=message.chat.id, filter=ChatMembersFilter.ADMINISTRATORS
|
|
|
|
|
- ) # will it giv floods ?
|
|
|
|
|
|
|
+ admin_data = [
|
|
|
|
|
+ i
|
|
|
|
|
+ async for i in await app.get_chat_members(
|
|
|
|
|
+ chat_id=message.chat.id, filter=ChatMembersFilter.ADMINISTRATORS
|
|
|
|
|
+ )
|
|
|
|
|
+ ] # will it give floods ???
|
|
|
for admin in admin_data:
|
|
for admin in admin_data:
|
|
|
if admin.user.is_bot or admin.user.is_deleted:
|
|
if admin.user.is_bot or admin.user.is_deleted:
|
|
|
# return bots or deleted admins
|
|
# return bots or deleted admins
|