|
@@ -22,6 +22,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
|
SOFTWARE.
|
|
SOFTWARE.
|
|
|
"""
|
|
"""
|
|
|
import asyncio
|
|
import asyncio
|
|
|
|
|
+from traceback import format_exc as err
|
|
|
|
|
|
|
|
from pyrogram import filters
|
|
from pyrogram import filters
|
|
|
from pyrogram.types import (CallbackQuery, ChatPermissions,
|
|
from pyrogram.types import (CallbackQuery, ChatPermissions,
|
|
@@ -30,8 +31,10 @@ from pyrogram.types import (CallbackQuery, ChatPermissions,
|
|
|
|
|
|
|
|
from wbb import BOT_ID, SUDOERS, app
|
|
from wbb import BOT_ID, SUDOERS, app
|
|
|
from wbb.core.decorators.errors import capture_err
|
|
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,
|
|
from wbb.utils.dbfunctions import (add_warn, get_warn, int_to_alpha,
|
|
|
remove_warns)
|
|
remove_warns)
|
|
|
|
|
+from wbb.utils.functions import extract_user, extract_user_and_reason
|
|
|
|
|
|
|
|
__MODULE__ = "Admin"
|
|
__MODULE__ = "Admin"
|
|
|
__HELP__ = """/ban - Ban A User
|
|
__HELP__ = """/ban - Ban A User
|
|
@@ -54,7 +57,10 @@ __HELP__ = """/ban - Ban A User
|
|
|
|
|
|
|
|
async def member_permissions(chat_id: int, user_id: int):
|
|
async def member_permissions(chat_id: int, user_id: int):
|
|
|
perms = []
|
|
perms = []
|
|
|
- member = await app.get_chat_member(chat_id, user_id)
|
|
|
|
|
|
|
+ try:
|
|
|
|
|
+ member = await app.get_chat_member(chat_id, user_id)
|
|
|
|
|
+ except Exception:
|
|
|
|
|
+ return []
|
|
|
if member.can_post_messages:
|
|
if member.can_post_messages:
|
|
|
perms.append("can_post_messages")
|
|
perms.append("can_post_messages")
|
|
|
if member.can_edit_messages:
|
|
if member.can_edit_messages:
|
|
@@ -139,7 +145,7 @@ async def purgeFunc(client, message: Message):
|
|
|
return
|
|
return
|
|
|
if not message.reply_to_message:
|
|
if not message.reply_to_message:
|
|
|
return await message.reply_text(
|
|
return await message.reply_text(
|
|
|
- "Reply To A Message To Delete From, Don't Make Fun Of Yourself!"
|
|
|
|
|
|
|
+ "Reply to a message to delete from, don't make fun of yourself!"
|
|
|
)
|
|
)
|
|
|
await message.delete()
|
|
await message.delete()
|
|
|
for a_s_message_id in range(
|
|
for a_s_message_id in range(
|
|
@@ -165,21 +171,28 @@ async def purgeFunc(client, message: Message):
|
|
|
@app.on_message(filters.command("kick") & ~filters.edited)
|
|
@app.on_message(filters.command("kick") & ~filters.edited)
|
|
|
@adminsOnly("can_restrict_members")
|
|
@adminsOnly("can_restrict_members")
|
|
|
async def kickFunc(_, message: Message):
|
|
async def kickFunc(_, message: Message):
|
|
|
- if len(message.command) == 2:
|
|
|
|
|
- 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
|
|
|
|
|
- else:
|
|
|
|
|
|
|
+ user_id, reason = await extract_user_and_reason(message)
|
|
|
|
|
+ if not user_id:
|
|
|
|
|
+ return await message.reply_text("I can't find that user.")
|
|
|
|
|
+ if user_id == BOT_ID:
|
|
|
return await message.reply_text(
|
|
return await message.reply_text(
|
|
|
- "Provide a username or reply to a user's message to kick."
|
|
|
|
|
|
|
+ "I can't kick myself, i can leave if you want."
|
|
|
)
|
|
)
|
|
|
if user_id in SUDOERS:
|
|
if user_id in SUDOERS:
|
|
|
- await message.reply_text("You Wanna Kick The Elevated One?")
|
|
|
|
|
- else:
|
|
|
|
|
- await message.chat.kick_member(user_id)
|
|
|
|
|
- await asyncio.sleep(1)
|
|
|
|
|
- await message.reply_text("Kicked!")
|
|
|
|
|
- await message.chat.unban_member(user_id)
|
|
|
|
|
|
|
+ return await message.reply_text("You Wanna Kick The Elevated One?")
|
|
|
|
|
+ if user_id in (await list_admins(message.chat.id)):
|
|
|
|
|
+ return await message.reply_text(
|
|
|
|
|
+ "I can't kick an admin, You know the rules, so do i."
|
|
|
|
|
+ )
|
|
|
|
|
+ mention = (await app.get_users(user_id)).mention
|
|
|
|
|
+ msg = f"""
|
|
|
|
|
+**Kicked User:** {mention}
|
|
|
|
|
+**Kicked By:** {message.from_user.mention if message.from_user else 'Anon'}
|
|
|
|
|
+**Reason:** {reason or 'No Reason Provided.'}"""
|
|
|
|
|
+ await message.chat.kick_member(user_id)
|
|
|
|
|
+ await message.reply_text(msg)
|
|
|
|
|
+ await asyncio.sleep(1)
|
|
|
|
|
+ await message.chat.unban_member(user_id)
|
|
|
|
|
|
|
|
|
|
|
|
|
# Ban members
|
|
# Ban members
|
|
@@ -188,19 +201,28 @@ async def kickFunc(_, message: Message):
|
|
|
@app.on_message(filters.command("ban") & ~filters.edited)
|
|
@app.on_message(filters.command("ban") & ~filters.edited)
|
|
|
@adminsOnly("can_restrict_members")
|
|
@adminsOnly("can_restrict_members")
|
|
|
async def banFunc(_, message: Message):
|
|
async def banFunc(_, message: Message):
|
|
|
- if len(message.command) == 2:
|
|
|
|
|
- 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
|
|
|
|
|
- else:
|
|
|
|
|
|
|
+ user_id, reason = await extract_user_and_reason(message)
|
|
|
|
|
+ if not user_id:
|
|
|
|
|
+ return await message.reply_text("I can't find that user.")
|
|
|
|
|
+ if user_id == BOT_ID:
|
|
|
return await message.reply_text(
|
|
return await message.reply_text(
|
|
|
- "Provide a username or reply to a user's message to ban."
|
|
|
|
|
|
|
+ "I can't ban myself, i can leave if you want."
|
|
|
)
|
|
)
|
|
|
if user_id in SUDOERS:
|
|
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!")
|
|
|
|
|
|
|
+ return await message.reply_text(
|
|
|
|
|
+ "You Wanna Ban The Elevated One?, RECONSIDER!"
|
|
|
|
|
+ )
|
|
|
|
|
+ if user_id in (await list_admins(message.chat.id)):
|
|
|
|
|
+ return await message.reply_text(
|
|
|
|
|
+ "I can't ban an admin, You know the rules, so do i."
|
|
|
|
|
+ )
|
|
|
|
|
+ mention = (await app.get_users(user_id)).mention
|
|
|
|
|
+ msg = f"""
|
|
|
|
|
+**Banned User:** {mention}
|
|
|
|
|
+**Banned By:** {message.from_user.mention if message.from_user else 'Anon'}
|
|
|
|
|
+**Reason:** {reason or 'No Reason Provided.'}"""
|
|
|
|
|
+ await message.chat.kick_member(user_id)
|
|
|
|
|
+ await message.reply_text(msg)
|
|
|
|
|
|
|
|
|
|
|
|
|
# Unban members
|
|
# Unban members
|
|
@@ -209,6 +231,10 @@ async def banFunc(_, message: Message):
|
|
|
@app.on_message(filters.command("unban") & ~filters.edited)
|
|
@app.on_message(filters.command("unban") & ~filters.edited)
|
|
|
@adminsOnly("can_restrict_members")
|
|
@adminsOnly("can_restrict_members")
|
|
|
async def unbanFunc(_, message: Message):
|
|
async def unbanFunc(_, message: Message):
|
|
|
|
|
+ # we don't need reasons for unban, also, we
|
|
|
|
|
+ # don't need to get "text_mention" entity, because
|
|
|
|
|
+ # normal users won't get text_mention if the the user
|
|
|
|
|
+ # they want to unban is not in the group.
|
|
|
if len(message.command) == 2:
|
|
if len(message.command) == 2:
|
|
|
user = message.text.split(None, 1)[1]
|
|
user = message.text.split(None, 1)[1]
|
|
|
elif len(message.command) == 1 and message.reply_to_message:
|
|
elif len(message.command) == 1 and message.reply_to_message:
|
|
@@ -239,17 +265,14 @@ async def deleteFunc(_, message: Message):
|
|
|
@app.on_message(filters.command("promote") & ~filters.edited)
|
|
@app.on_message(filters.command("promote") & ~filters.edited)
|
|
|
@adminsOnly("can_promote_members")
|
|
@adminsOnly("can_promote_members")
|
|
|
async def promoteFunc(_, message: Message):
|
|
async def promoteFunc(_, message: Message):
|
|
|
- chat_id = message.chat.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
|
|
|
|
|
- elif len(message.command) == 1 and message.reply_to_message:
|
|
|
|
|
- user_id = message.reply_to_message.from_user.id
|
|
|
|
|
- else:
|
|
|
|
|
- return await message.reply_text(
|
|
|
|
|
- "Reply To A User's Message Or Give A Username To Promote."
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ user_id = await extract_user(message)
|
|
|
|
|
+ if not user_id:
|
|
|
|
|
+ return await message.reply_text("I can't find that user.")
|
|
|
|
|
+ bot = await app.get_chat_member(message.chat.id, BOT_ID)
|
|
|
|
|
+ if user_id == BOT_ID:
|
|
|
|
|
+ return await message.reply_text("I can't promote myself.")
|
|
|
|
|
+ if not bot.can_promote_members:
|
|
|
|
|
+ return await message.reply_text("I don't have enough permissions")
|
|
|
await message.chat.promote_member(
|
|
await message.chat.promote_member(
|
|
|
user_id=user_id,
|
|
user_id=user_id,
|
|
|
can_change_info=bot.can_change_info,
|
|
can_change_info=bot.can_change_info,
|
|
@@ -270,14 +293,18 @@ async def promoteFunc(_, message: Message):
|
|
|
@app.on_message(filters.command("demote") & ~filters.edited)
|
|
@app.on_message(filters.command("demote") & ~filters.edited)
|
|
|
@adminsOnly("can_promote_members")
|
|
@adminsOnly("can_promote_members")
|
|
|
async def demote(_, message: Message):
|
|
async def demote(_, message: Message):
|
|
|
- if len(message.command) == 2:
|
|
|
|
|
- username = message.text.split(None, 1)[1]
|
|
|
|
|
- user_id = (await app.get_users(username)).id
|
|
|
|
|
- elif len(message.command) == 1 and message.reply_to_message:
|
|
|
|
|
- user_id = message.reply_to_message.from_user.id
|
|
|
|
|
- else:
|
|
|
|
|
|
|
+ user_id = await extract_user(message)
|
|
|
|
|
+ if not user_id:
|
|
|
|
|
+ return await message.reply_text("I can't find that user.")
|
|
|
|
|
+ if user_id == BOT_ID:
|
|
|
|
|
+ return await message.reply_text("I can't demote myself.")
|
|
|
|
|
+ if user_id in SUDOERS:
|
|
|
|
|
+ return await message.reply_text(
|
|
|
|
|
+ "You wanna demote the elevated one?, RECONSIDER!"
|
|
|
|
|
+ )
|
|
|
|
|
+ if user_id in (await list_admins(message.chat.id)):
|
|
|
return await message.reply_text(
|
|
return await message.reply_text(
|
|
|
- "Reply To A User's Message Or Give A Username To Demote."
|
|
|
|
|
|
|
+ "I can't demote an admin, You know the rules, so do i."
|
|
|
)
|
|
)
|
|
|
await message.chat.promote_member(
|
|
await message.chat.promote_member(
|
|
|
user_id=user_id,
|
|
user_id=user_id,
|
|
@@ -300,7 +327,7 @@ async def demote(_, message: Message):
|
|
|
@adminsOnly("can_pin_messages")
|
|
@adminsOnly("can_pin_messages")
|
|
|
async def pin(_, message: Message):
|
|
async def pin(_, message: Message):
|
|
|
if not message.reply_to_message:
|
|
if not message.reply_to_message:
|
|
|
- return await message.reply_text("Reply To A Message To Pin.")
|
|
|
|
|
|
|
+ return await message.reply_text("Reply to a message to pin it.")
|
|
|
await message.reply_to_message.pin(disable_notification=True)
|
|
await message.reply_to_message.pin(disable_notification=True)
|
|
|
|
|
|
|
|
|
|
|
|
@@ -310,30 +337,27 @@ async def pin(_, message: Message):
|
|
|
@app.on_message(filters.command("mute") & ~filters.edited)
|
|
@app.on_message(filters.command("mute") & ~filters.edited)
|
|
|
@adminsOnly("can_restrict_members")
|
|
@adminsOnly("can_restrict_members")
|
|
|
async def mute(_, message: Message):
|
|
async def mute(_, message: Message):
|
|
|
- if len(message.command) == 2:
|
|
|
|
|
- user = await app.get_users(message.text.split(None, 1)[1])
|
|
|
|
|
- elif len(message.command) == 1 and message.reply_to_message:
|
|
|
|
|
- user = message.reply_to_message.from_user
|
|
|
|
|
- else:
|
|
|
|
|
|
|
+ user_id, reason = await extract_user_and_reason(message)
|
|
|
|
|
+ if not user_id:
|
|
|
|
|
+ return await message.reply_text("I can't find that user.")
|
|
|
|
|
+ if user_id == BOT_ID:
|
|
|
|
|
+ return await message.reply_text("I can't mute myself.")
|
|
|
|
|
+ if user_id in SUDOERS:
|
|
|
return await message.reply_text(
|
|
return await message.reply_text(
|
|
|
- "Provide a username or reply to a user's message to mute."
|
|
|
|
|
|
|
+ "You wanna mute the elevated one?, RECONSIDER!"
|
|
|
)
|
|
)
|
|
|
- if user.id in SUDOERS:
|
|
|
|
|
- return await message.reply_text("You Wanna Mute The Elevated One?")
|
|
|
|
|
- await message.chat.restrict_member(user.id, permissions=ChatPermissions())
|
|
|
|
|
- keyboard = InlineKeyboardMarkup(
|
|
|
|
|
- [
|
|
|
|
|
- [
|
|
|
|
|
- InlineKeyboardButton(
|
|
|
|
|
- text="🚨 Unmute 🚨", callback_data=f"unmute_{user.id}"
|
|
|
|
|
- )
|
|
|
|
|
- ]
|
|
|
|
|
- ]
|
|
|
|
|
- )
|
|
|
|
|
- await message.reply_text(
|
|
|
|
|
- f"Enough freedom of speech, Muted {user.mention} !",
|
|
|
|
|
- reply_markup=keyboard,
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ if user_id in (await list_admins(message.chat.id)):
|
|
|
|
|
+ return await message.reply_text(
|
|
|
|
|
+ "I can't mute an admin, You know the rules, so do i."
|
|
|
|
|
+ )
|
|
|
|
|
+ await message.chat.restrict_member(user_id, permissions=ChatPermissions())
|
|
|
|
|
+ mention = (await app.get_users(user_id)).mention
|
|
|
|
|
+ keyboard = ikb([[("🚨 Unmute 🚨", f"unmute_{user_id}")]])
|
|
|
|
|
+ msg = f"""
|
|
|
|
|
+**Muted User:** {mention}
|
|
|
|
|
+**Muted By:** {message.from_user.mention if message.from_user else 'Anon'}
|
|
|
|
|
+**Reason:** {reason or 'No Reason Provided.'}"""
|
|
|
|
|
+ await message.reply_text(msg, reply_markup=keyboard)
|
|
|
|
|
|
|
|
|
|
|
|
|
# Unmute members
|
|
# Unmute members
|
|
@@ -342,15 +366,10 @@ async def mute(_, message: Message):
|
|
|
@app.on_message(filters.command("unmute") & ~filters.edited)
|
|
@app.on_message(filters.command("unmute") & ~filters.edited)
|
|
|
@adminsOnly("can_restrict_members")
|
|
@adminsOnly("can_restrict_members")
|
|
|
async def unmute(_, message: Message):
|
|
async def unmute(_, message: Message):
|
|
|
- if len(message.command) == 2:
|
|
|
|
|
- user = message.text.split(None, 1)[1]
|
|
|
|
|
- elif len(message.command) == 1 and message.reply_to_message:
|
|
|
|
|
- user = message.reply_to_message.from_user.id
|
|
|
|
|
- else:
|
|
|
|
|
- return await message.reply_text(
|
|
|
|
|
- "Provide a username or reply to a user's message to Unmute"
|
|
|
|
|
- )
|
|
|
|
|
- await message.chat.unban_member(user)
|
|
|
|
|
|
|
+ user_id = await extract_user(message)
|
|
|
|
|
+ if not user_id:
|
|
|
|
|
+ return await message.reply_text("I can't find that user.")
|
|
|
|
|
+ await message.chat.unban_member(user_id)
|
|
|
await message.reply_text("Unmuted!")
|
|
await message.reply_text("Unmuted!")
|
|
|
|
|
|
|
|
|
|
|
|
@@ -381,57 +400,51 @@ async def ban_deleted_accounts(_, message: Message):
|
|
|
@app.on_message(filters.command("warn") & ~filters.edited)
|
|
@app.on_message(filters.command("warn") & ~filters.edited)
|
|
|
@adminsOnly("can_restrict_members")
|
|
@adminsOnly("can_restrict_members")
|
|
|
async def warn_user(_, message: Message):
|
|
async def warn_user(_, message: Message):
|
|
|
- if not message.reply_to_message:
|
|
|
|
|
- return await message.reply_text("Reply to a message to warn a user.")
|
|
|
|
|
|
|
+ user_id, reason = await extract_user_and_reason(message)
|
|
|
chat_id = message.chat.id
|
|
chat_id = message.chat.id
|
|
|
- user_id = message.reply_to_message.from_user.id
|
|
|
|
|
- mention = message.reply_to_message.from_user.mention
|
|
|
|
|
|
|
+ if not user_id:
|
|
|
|
|
+ return await message.reply_text("I can't find that user.")
|
|
|
|
|
+ if user_id == BOT_ID:
|
|
|
|
|
+ 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:
|
|
|
- await message.reply_text("You Wanna Warn The Elevated One?")
|
|
|
|
|
- elif user_id == BOT_ID:
|
|
|
|
|
- await message.reply_text("Huh, Can't warn myself.")
|
|
|
|
|
- elif user_id in await list_admins(message.chat.id):
|
|
|
|
|
- await message.reply_text("Can't warn an admin.")
|
|
|
|
|
|
|
+ return await message.reply_text(
|
|
|
|
|
+ "You Wanna Warn The Elevated One?, RECONSIDER!"
|
|
|
|
|
+ )
|
|
|
|
|
+ if user_id in (await list_admins(chat_id)):
|
|
|
|
|
+ return await message.reply_text(
|
|
|
|
|
+ "I can't warn an admin, You know the rules, so do i."
|
|
|
|
|
+ )
|
|
|
|
|
+ if user_id not in (await list_members(chat_id)):
|
|
|
|
|
+ return await message.reply_text("This user isn't here.")
|
|
|
|
|
+ user, warns = await asyncio.gather(
|
|
|
|
|
+ app.get_users(user_id), get_warn(chat_id, await int_to_alpha(user_id))
|
|
|
|
|
+ )
|
|
|
|
|
+ mention = user.mention
|
|
|
|
|
+ keyboard = ikb([[("🚨 Remove Warn 🚨", f"unwarn_{user_id}")]])
|
|
|
|
|
+ if warns:
|
|
|
|
|
+ warns = warns["warns"]
|
|
|
else:
|
|
else:
|
|
|
- if user_id in await list_members(chat_id):
|
|
|
|
|
- warns = await get_warn(chat_id, await int_to_alpha(user_id))
|
|
|
|
|
- keyboard = InlineKeyboardMarkup(
|
|
|
|
|
- [
|
|
|
|
|
- [
|
|
|
|
|
- InlineKeyboardButton(
|
|
|
|
|
- text="🚨 Remove Warn 🚨",
|
|
|
|
|
- callback_data=f"unwarn_{user_id}",
|
|
|
|
|
- )
|
|
|
|
|
- ]
|
|
|
|
|
- ]
|
|
|
|
|
- )
|
|
|
|
|
- if warns:
|
|
|
|
|
- warns = warns["warns"]
|
|
|
|
|
- else:
|
|
|
|
|
- warn = {"warns": 1}
|
|
|
|
|
- await add_warn(chat_id, await int_to_alpha(user_id), warn)
|
|
|
|
|
- return await message.reply_text(
|
|
|
|
|
- f"Warned {mention} | 1/3 warnings now.",
|
|
|
|
|
- reply_markup=keyboard,
|
|
|
|
|
- )
|
|
|
|
|
- if warns >= 2:
|
|
|
|
|
- await message.chat.kick_member(user_id)
|
|
|
|
|
- await message.reply_text(
|
|
|
|
|
- f"Number of warns of {mention} exceeded, Banned!"
|
|
|
|
|
- )
|
|
|
|
|
- await remove_warns(chat_id, await int_to_alpha(user_id))
|
|
|
|
|
- else:
|
|
|
|
|
- warn = {"warns": warns + 1}
|
|
|
|
|
-
|
|
|
|
|
- await message.reply_text(
|
|
|
|
|
- f"Warned {mention} | {warns+1}/3 warnings now.",
|
|
|
|
|
- reply_markup=keyboard,
|
|
|
|
|
- )
|
|
|
|
|
- return await add_warn(
|
|
|
|
|
- chat_id, await int_to_alpha(user_id), warn
|
|
|
|
|
- )
|
|
|
|
|
- else:
|
|
|
|
|
- await message.reply_text("This user isn't here.")
|
|
|
|
|
|
|
+ warns = 0
|
|
|
|
|
+ if warns >= 2:
|
|
|
|
|
+ _, __, alpha = await asyncio.gather(
|
|
|
|
|
+ message.chat.kick_member(user_id),
|
|
|
|
|
+ message.reply_text(
|
|
|
|
|
+ "Number of warns of {mention} exceeded, BANNED!"
|
|
|
|
|
+ ),
|
|
|
|
|
+ int_to_alpha(user_id),
|
|
|
|
|
+ )
|
|
|
|
|
+ await remove_warns(chat_id, alpha)
|
|
|
|
|
+ else:
|
|
|
|
|
+ warn = {"warns": warns + 1}
|
|
|
|
|
+ msg = f"""
|
|
|
|
|
+**Warned User:** {mention}
|
|
|
|
|
+**Warned By:** {message.from_user.mention if message.from_user else 'Anon'}
|
|
|
|
|
+**Reason:** {reason or 'No Reason Provided.'}
|
|
|
|
|
+**Warns:** {warns + 1}/3"""
|
|
|
|
|
+ await message.reply_text(msg, reply_markup=keyboard)
|
|
|
|
|
+ await add_warn(chat_id, await int_to_alpha(user_id), warn)
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.on_callback_query(filters.regex("unwarn_"))
|
|
@app.on_callback_query(filters.regex("unwarn_"))
|
|
@@ -489,31 +502,16 @@ async def remove_warnings(_, message: Message):
|
|
|
@app.on_message(filters.command("warns") & ~filters.edited)
|
|
@app.on_message(filters.command("warns") & ~filters.edited)
|
|
|
@capture_err
|
|
@capture_err
|
|
|
async def check_warns(_, message: Message):
|
|
async def check_warns(_, message: Message):
|
|
|
- if not message.reply_to_message:
|
|
|
|
|
- return await message.reply_text(
|
|
|
|
|
- "Reply to a message to check a user's warnings."
|
|
|
|
|
- )
|
|
|
|
|
- user_id = message.reply_to_message.from_user.id
|
|
|
|
|
- mention_user = message.reply_to_message.from_user.mention
|
|
|
|
|
- mention_from_user = message.from_user.mention
|
|
|
|
|
- chat_id = message.chat.id
|
|
|
|
|
- if message.reply_to_message:
|
|
|
|
|
- warns = await get_warn(chat_id, await int_to_alpha(user_id))
|
|
|
|
|
- if warns:
|
|
|
|
|
- warns = warns["warns"]
|
|
|
|
|
- else:
|
|
|
|
|
- return await message.reply_text(
|
|
|
|
|
- f"{mention_user} have no warnings."
|
|
|
|
|
- )
|
|
|
|
|
- return await message.reply_text(
|
|
|
|
|
- f"{mention_user} have {warns}/3 warnings."
|
|
|
|
|
- )
|
|
|
|
|
- warns = await get_warn(chat_id, await int_to_alpha(user_id))
|
|
|
|
|
|
|
+ user_id = await extract_user(message)
|
|
|
|
|
+ if not user_id:
|
|
|
|
|
+ return await message.reply_text("I can't find that user.")
|
|
|
|
|
+ warns = await get_warn(message.chat.id, await int_to_alpha(user_id))
|
|
|
|
|
+ mention = (await app.get_users(user_id)).mention
|
|
|
if warns:
|
|
if warns:
|
|
|
warns = warns["warns"]
|
|
warns = warns["warns"]
|
|
|
else:
|
|
else:
|
|
|
- return await message.reply_text(f"{mention_user} have no warnings.")
|
|
|
|
|
- await message.reply_text(f"{mention_from_user} have {warns}/3 warnings.")
|
|
|
|
|
|
|
+ return await message.reply_text(f"{mention} has no warnings.")
|
|
|
|
|
+ return await message.reply_text(f"{mention} has {warns}/3 warnings.")
|
|
|
|
|
|
|
|
|
|
|
|
|
# Report
|
|
# Report
|