|
@@ -22,10 +22,9 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
|
SOFTWARE.
|
|
SOFTWARE.
|
|
|
"""
|
|
"""
|
|
|
import asyncio
|
|
import asyncio
|
|
|
-import traceback
|
|
|
|
|
|
|
|
|
|
from pyrogram import filters
|
|
from pyrogram import filters
|
|
|
-from pyrogram.types import ChatPermissions
|
|
|
|
|
|
|
+from pyrogram.types import ChatPermissions, Message
|
|
|
|
|
|
|
|
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
|
|
@@ -36,6 +35,7 @@ __MODULE__ = "Admin"
|
|
|
__HELP__ = """/ban - Ban A User
|
|
__HELP__ = """/ban - Ban A User
|
|
|
/unban - Unban A User
|
|
/unban - Unban A User
|
|
|
/warn - Warn A User
|
|
/warn - Warn A User
|
|
|
|
|
+/rmwarn - Remove 1 Warning Of A User
|
|
|
/rmwarns - Remove All Warning of A User
|
|
/rmwarns - Remove All Warning of A User
|
|
|
/warns - Show Warning Of A User
|
|
/warns - Show Warning Of A User
|
|
|
/kick - Kick A User
|
|
/kick - Kick A User
|
|
@@ -50,15 +50,6 @@ __HELP__ = """/ban - Ban A User
|
|
|
/report | @admins - Report A Message To Admins."""
|
|
/report | @admins - Report A Message To Admins."""
|
|
|
|
|
|
|
|
|
|
|
|
|
-async def list_admins(chat_id: int):
|
|
|
|
|
- list_of_admins = []
|
|
|
|
|
- async for member in app.iter_chat_members(
|
|
|
|
|
- chat_id, filter="administrators"
|
|
|
|
|
- ):
|
|
|
|
|
- list_of_admins.append(member.user.id)
|
|
|
|
|
- return list_of_admins
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
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)
|
|
member = await app.get_chat_member(chat_id, user_id)
|
|
@@ -83,6 +74,18 @@ async def member_permissions(chat_id: int, user_id: int):
|
|
|
return perms
|
|
return perms
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+from wbb.core.decorators.permissions import adminsOnly
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+async def list_admins(chat_id: int):
|
|
|
|
|
+ list_of_admins = []
|
|
|
|
|
+ async for member in app.iter_chat_members(
|
|
|
|
|
+ chat_id, filter="administrators"
|
|
|
|
|
+ ):
|
|
|
|
|
+ list_of_admins.append(member.user.id)
|
|
|
|
|
+ return list_of_admins
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
async def current_chat_permissions(chat_id):
|
|
async def current_chat_permissions(chat_id):
|
|
|
perms = []
|
|
perms = []
|
|
|
perm = (await app.get_chat(chat_id)).permissions
|
|
perm = (await app.get_chat(chat_id)).permissions
|
|
@@ -126,501 +129,340 @@ async def list_members(group_id):
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.on_message(filters.command("purge") & ~filters.edited)
|
|
@app.on_message(filters.command("purge") & ~filters.edited)
|
|
|
-@capture_err
|
|
|
|
|
-async def purge(client, message):
|
|
|
|
|
- try:
|
|
|
|
|
- message_ids = []
|
|
|
|
|
- chat_id = message.chat.id
|
|
|
|
|
- user_id = message.from_user.id
|
|
|
|
|
- if message.chat.type not in ("supergroup", "channel"):
|
|
|
|
|
- return
|
|
|
|
|
- permissions = await member_permissions(chat_id, user_id)
|
|
|
|
|
- if "can_delete_messages" in permissions or user_id in SUDOERS:
|
|
|
|
|
- if message.reply_to_message:
|
|
|
|
|
- for a_s_message_id in range(
|
|
|
|
|
- message.reply_to_message.message_id, message.message_id
|
|
|
|
|
- ):
|
|
|
|
|
- message_ids.append(a_s_message_id)
|
|
|
|
|
- if len(message_ids) == 100:
|
|
|
|
|
- await client.delete_messages(
|
|
|
|
|
- chat_id=chat_id,
|
|
|
|
|
- message_ids=message_ids,
|
|
|
|
|
- revoke=True,
|
|
|
|
|
- )
|
|
|
|
|
- message_ids = []
|
|
|
|
|
- if len(message_ids) > 0:
|
|
|
|
|
- await client.delete_messages(
|
|
|
|
|
- chat_id=chat_id, 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()
|
|
|
|
|
- except Exception as e:
|
|
|
|
|
- await message.reply_text(str(e))
|
|
|
|
|
- e = traceback.format_exc()
|
|
|
|
|
- print(e)
|
|
|
|
|
|
|
+@adminsOnly("can_delete_messages")
|
|
|
|
|
+async def purgeFunc(client, message: Message):
|
|
|
|
|
+ chat_id = message.chat.id
|
|
|
|
|
+ message_ids = []
|
|
|
|
|
+ if message.chat.type not in ("supergroup", "channel"):
|
|
|
|
|
+ return
|
|
|
|
|
+ if not message.reply_to_message:
|
|
|
|
|
+ await message.reply_text(
|
|
|
|
|
+ "Reply To A Message To Delete From," " Don't Make Fun Of Yourself!"
|
|
|
|
|
+ )
|
|
|
|
|
+ for a_s_message_id in range(
|
|
|
|
|
+ message.reply_to_message.message_id, message.message_id
|
|
|
|
|
+ ):
|
|
|
|
|
+ message_ids.append(a_s_message_id)
|
|
|
|
|
+ if len(message_ids) == 100:
|
|
|
|
|
+ await client.delete_messages(
|
|
|
|
|
+ chat_id=chat_id,
|
|
|
|
|
+ message_ids=message_ids,
|
|
|
|
|
+ revoke=True,
|
|
|
|
|
+ )
|
|
|
|
|
+ message_ids = []
|
|
|
|
|
+ if len(message_ids) > 0:
|
|
|
|
|
+ await client.delete_messages(
|
|
|
|
|
+ chat_id=chat_id, message_ids=message_ids, revoke=True
|
|
|
|
|
+ )
|
|
|
|
|
|
|
|
|
|
|
|
|
# Kick members
|
|
# Kick members
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.on_message(filters.command("kick") & ~filters.edited)
|
|
@app.on_message(filters.command("kick") & ~filters.edited)
|
|
|
-@capture_err
|
|
|
|
|
-async def kick(_, message):
|
|
|
|
|
- try:
|
|
|
|
|
- from_user_id = message.from_user.id
|
|
|
|
|
- chat_id = message.chat.id
|
|
|
|
|
- permissions = await member_permissions(chat_id, from_user_id)
|
|
|
|
|
- if (
|
|
|
|
|
- "can_restrict_members" not in permissions
|
|
|
|
|
- and from_user_id not in SUDOERS
|
|
|
|
|
- ):
|
|
|
|
|
- await message.reply_text("You don't have enough permissions.")
|
|
|
|
|
- return
|
|
|
|
|
- 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:
|
|
|
|
|
- await message.reply_text(
|
|
|
|
|
- "Provide a username or reply to a user's message to kick."
|
|
|
|
|
- )
|
|
|
|
|
- return
|
|
|
|
|
- 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.chat.unban_member(user_id)
|
|
|
|
|
- await message.reply_text("Kicked!")
|
|
|
|
|
- except Exception as e:
|
|
|
|
|
- await message.reply_text(str(e))
|
|
|
|
|
- e = traceback.format_exc()
|
|
|
|
|
- print(e)
|
|
|
|
|
|
|
+@adminsOnly("can_restrict_members")
|
|
|
|
|
+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:
|
|
|
|
|
+ await message.reply_text(
|
|
|
|
|
+ "Provide a username or reply to a user's message to kick."
|
|
|
|
|
+ )
|
|
|
|
|
+ return
|
|
|
|
|
+ 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)
|
|
|
|
|
|
|
|
|
|
|
|
|
# Ban members
|
|
# Ban members
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.on_message(filters.command("ban") & ~filters.edited)
|
|
@app.on_message(filters.command("ban") & ~filters.edited)
|
|
|
-@capture_err
|
|
|
|
|
-async def ban(_, message):
|
|
|
|
|
- try:
|
|
|
|
|
- from_user_id = message.from_user.id
|
|
|
|
|
- chat_id = message.chat.id
|
|
|
|
|
- permissions = await member_permissions(chat_id, from_user_id)
|
|
|
|
|
- if (
|
|
|
|
|
- "can_restrict_members" not in permissions
|
|
|
|
|
- and from_user_id not in SUDOERS
|
|
|
|
|
- ):
|
|
|
|
|
- await message.reply_text("You don't have enough permissions.")
|
|
|
|
|
- return
|
|
|
|
|
- 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:
|
|
|
|
|
- await message.reply_text(
|
|
|
|
|
- "Provide a username or reply to a user's message to ban."
|
|
|
|
|
- )
|
|
|
|
|
- return
|
|
|
|
|
- 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))
|
|
|
|
|
- e = traceback.format_exc()
|
|
|
|
|
- print(e)
|
|
|
|
|
|
|
+@adminsOnly("can_restrict_members")
|
|
|
|
|
+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:
|
|
|
|
|
+ await message.reply_text(
|
|
|
|
|
+ "Provide a username or reply to a user's message to ban."
|
|
|
|
|
+ )
|
|
|
|
|
+ return
|
|
|
|
|
+ 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!")
|
|
|
|
|
|
|
|
|
|
|
|
|
# Unban members
|
|
# Unban members
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.on_message(filters.command("unban") & ~filters.edited)
|
|
@app.on_message(filters.command("unban") & ~filters.edited)
|
|
|
-@capture_err
|
|
|
|
|
-async def unban(_, message):
|
|
|
|
|
- try:
|
|
|
|
|
- from_user_id = message.from_user.id
|
|
|
|
|
- chat_id = message.chat.id
|
|
|
|
|
- permissions = await member_permissions(chat_id, from_user_id)
|
|
|
|
|
- if (
|
|
|
|
|
- "can_restrict_members" not in permissions
|
|
|
|
|
- and from_user_id not in SUDOERS
|
|
|
|
|
- ):
|
|
|
|
|
- await message.reply_text("You don't have enough permissions.")
|
|
|
|
|
- return
|
|
|
|
|
- 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:
|
|
|
|
|
- await message.reply_text(
|
|
|
|
|
- "Provide a username or reply to a user's message to unban."
|
|
|
|
|
- )
|
|
|
|
|
- return
|
|
|
|
|
- await message.chat.unban_member(user)
|
|
|
|
|
- await message.reply_text("Unbanned!")
|
|
|
|
|
- except Exception as e:
|
|
|
|
|
- await message.reply_text(str(e))
|
|
|
|
|
- e = traceback.format_exc()
|
|
|
|
|
- print(e)
|
|
|
|
|
|
|
+@adminsOnly("can_restrict_members")
|
|
|
|
|
+async def unbanFunc(_, 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:
|
|
|
|
|
+ await message.reply_text(
|
|
|
|
|
+ "Provide a username or reply to a user's message to unban."
|
|
|
|
|
+ )
|
|
|
|
|
+ return
|
|
|
|
|
+ await message.chat.unban_member(user)
|
|
|
|
|
+ await message.reply_text("Unbanned!")
|
|
|
|
|
|
|
|
|
|
|
|
|
# Delete messages
|
|
# Delete messages
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.on_message(filters.command("del") & ~filters.edited)
|
|
@app.on_message(filters.command("del") & ~filters.edited)
|
|
|
-@capture_err
|
|
|
|
|
-async def delete(_, message):
|
|
|
|
|
|
|
+@adminsOnly("can_delete_messages")
|
|
|
|
|
+async def deleteFunc(_, message: Message):
|
|
|
if not message.reply_to_message:
|
|
if not message.reply_to_message:
|
|
|
await message.reply_text("Reply To A Message To Delete It")
|
|
await message.reply_text("Reply To A Message To Delete It")
|
|
|
return
|
|
return
|
|
|
- try:
|
|
|
|
|
- from_user_id = message.from_user.id
|
|
|
|
|
- chat_id = message.chat.id
|
|
|
|
|
- permissions = await member_permissions(chat_id, from_user_id)
|
|
|
|
|
- if (
|
|
|
|
|
- "can_delete_messages" not in permissions
|
|
|
|
|
- and from_user_id not in SUDOERS
|
|
|
|
|
- ):
|
|
|
|
|
- await message.reply_text(
|
|
|
|
|
- "You Don't Have Enough Permissions,"
|
|
|
|
|
- + " Consider Deleting Yourself!"
|
|
|
|
|
- )
|
|
|
|
|
- return
|
|
|
|
|
- await message.reply_to_message.delete()
|
|
|
|
|
- await message.delete()
|
|
|
|
|
- except Exception as e:
|
|
|
|
|
- await message.reply_text(str(e))
|
|
|
|
|
- e = traceback.format_exc()
|
|
|
|
|
- print(e)
|
|
|
|
|
|
|
+ await message.reply_to_message.delete()
|
|
|
|
|
+ await message.delete()
|
|
|
|
|
|
|
|
|
|
|
|
|
# Promote Members
|
|
# Promote Members
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.on_message(filters.command("promote") & ~filters.edited)
|
|
@app.on_message(filters.command("promote") & ~filters.edited)
|
|
|
-@capture_err
|
|
|
|
|
-async def promote(_, message):
|
|
|
|
|
- try:
|
|
|
|
|
- from_user_id = message.from_user.id
|
|
|
|
|
- chat_id = message.chat.id
|
|
|
|
|
- permissions = await member_permissions(chat_id, from_user_id)
|
|
|
|
|
- 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 = 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:
|
|
|
|
|
- await message.reply_text(
|
|
|
|
|
- "Reply To A User's Message Or Give A Username To Promote."
|
|
|
|
|
- )
|
|
|
|
|
- return
|
|
|
|
|
- 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=False,
|
|
|
|
|
- can_pin_messages=bot.can_pin_messages,
|
|
|
|
|
- can_promote_members=bot.can_promote_members,
|
|
|
|
|
- can_manage_chat=bot.can_manage_chat,
|
|
|
|
|
- can_manage_voice_chats=bot.can_manage_voice_chats,
|
|
|
|
|
|
|
+@adminsOnly("can_promote_members")
|
|
|
|
|
+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:
|
|
|
|
|
+ await message.reply_text(
|
|
|
|
|
+ "Reply To A User's Message Or Give A Username To Promote."
|
|
|
)
|
|
)
|
|
|
- await message.reply_text("Promoted!")
|
|
|
|
|
-
|
|
|
|
|
- except Exception as e:
|
|
|
|
|
- await message.reply_text(str(e))
|
|
|
|
|
- e = traceback.format_exc()
|
|
|
|
|
- print(e)
|
|
|
|
|
|
|
+ return
|
|
|
|
|
+ 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=False,
|
|
|
|
|
+ can_pin_messages=bot.can_pin_messages,
|
|
|
|
|
+ can_promote_members=bot.can_promote_members,
|
|
|
|
|
+ can_manage_chat=bot.can_manage_chat,
|
|
|
|
|
+ can_manage_voice_chats=bot.can_manage_voice_chats,
|
|
|
|
|
+ )
|
|
|
|
|
+ await message.reply_text("Promoted!")
|
|
|
|
|
|
|
|
|
|
|
|
|
# Demote Member
|
|
# Demote Member
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.on_message(filters.command("demote") & ~filters.edited)
|
|
@app.on_message(filters.command("demote") & ~filters.edited)
|
|
|
-@capture_err
|
|
|
|
|
-async def demote(_, message):
|
|
|
|
|
- try:
|
|
|
|
|
- from_user_id = message.from_user.id
|
|
|
|
|
- chat_id = message.chat.id
|
|
|
|
|
- permissions = await member_permissions(chat_id, from_user_id)
|
|
|
|
|
- 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
|
|
|
|
|
- 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:
|
|
|
|
|
- await message.reply_text(
|
|
|
|
|
- "Reply To A User's Message Or Give A Username To Demote."
|
|
|
|
|
- )
|
|
|
|
|
- return
|
|
|
|
|
- await message.chat.promote_member(
|
|
|
|
|
- user_id=user_id,
|
|
|
|
|
- can_change_info=False,
|
|
|
|
|
- can_invite_users=False,
|
|
|
|
|
- can_delete_messages=False,
|
|
|
|
|
- can_restrict_members=False,
|
|
|
|
|
- can_pin_messages=False,
|
|
|
|
|
- can_promote_members=False,
|
|
|
|
|
- can_manage_chat=False,
|
|
|
|
|
- can_manage_voice_chats=False,
|
|
|
|
|
|
|
+@adminsOnly("can_promote_members")
|
|
|
|
|
+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:
|
|
|
|
|
+ await message.reply_text(
|
|
|
|
|
+ "Reply To A User's Message Or Give A Username To Demote."
|
|
|
)
|
|
)
|
|
|
- await message.reply_text("Demoted!")
|
|
|
|
|
-
|
|
|
|
|
- except Exception as e:
|
|
|
|
|
- await message.reply_text(str(e))
|
|
|
|
|
- e = traceback.format_exc()
|
|
|
|
|
- print(e)
|
|
|
|
|
|
|
+ return
|
|
|
|
|
+ await message.chat.promote_member(
|
|
|
|
|
+ user_id=user_id,
|
|
|
|
|
+ can_change_info=False,
|
|
|
|
|
+ can_invite_users=False,
|
|
|
|
|
+ can_delete_messages=False,
|
|
|
|
|
+ can_restrict_members=False,
|
|
|
|
|
+ can_pin_messages=False,
|
|
|
|
|
+ can_promote_members=False,
|
|
|
|
|
+ can_manage_chat=False,
|
|
|
|
|
+ can_manage_voice_chats=False,
|
|
|
|
|
+ )
|
|
|
|
|
+ await message.reply_text("Demoted!")
|
|
|
|
|
|
|
|
|
|
|
|
|
# Pin Messages
|
|
# Pin Messages
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.on_message(filters.command("pin") & ~filters.edited)
|
|
@app.on_message(filters.command("pin") & ~filters.edited)
|
|
|
-@capture_err
|
|
|
|
|
-async def pin(_, message):
|
|
|
|
|
|
|
+@adminsOnly("can_pin_messages")
|
|
|
|
|
+async def pin(_, message: Message):
|
|
|
if not message.reply_to_message:
|
|
if not message.reply_to_message:
|
|
|
await message.reply_text("Reply To A Message To Pin.")
|
|
await message.reply_text("Reply To A Message To Pin.")
|
|
|
return
|
|
return
|
|
|
- try:
|
|
|
|
|
- from_user_id = message.from_user.id
|
|
|
|
|
- chat_id = message.chat.id
|
|
|
|
|
- permissions = await member_permissions(chat_id, from_user_id)
|
|
|
|
|
- if "can_pin_messages" in permissions or from_user_id in SUDOERS:
|
|
|
|
|
- await message.reply_to_message.pin(disable_notification=True)
|
|
|
|
|
- else:
|
|
|
|
|
- await message.reply_text("You're Not An Admin, Stop Spamming!")
|
|
|
|
|
- return
|
|
|
|
|
- except Exception as e:
|
|
|
|
|
- await message.reply_text(str(e))
|
|
|
|
|
- e = traceback.format_exc()
|
|
|
|
|
- print(e)
|
|
|
|
|
|
|
+ await message.reply_to_message.pin(disable_notification=True)
|
|
|
|
|
|
|
|
|
|
|
|
|
# Mute members
|
|
# Mute members
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.on_message(filters.command("mute") & ~filters.edited)
|
|
@app.on_message(filters.command("mute") & ~filters.edited)
|
|
|
-@capture_err
|
|
|
|
|
-async def mute(_, message):
|
|
|
|
|
- try:
|
|
|
|
|
- from_user_id = message.from_user.id
|
|
|
|
|
- chat_id = message.chat.id
|
|
|
|
|
- permissions = await member_permissions(chat_id, from_user_id)
|
|
|
|
|
- if (
|
|
|
|
|
- "can_restrict_members" not in permissions
|
|
|
|
|
- and from_user_id not in SUDOERS
|
|
|
|
|
- ):
|
|
|
|
|
- await message.reply_text("You don't have enough permissions.")
|
|
|
|
|
- return
|
|
|
|
|
- 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:
|
|
|
|
|
- await message.reply_text(
|
|
|
|
|
- "Provide a username or reply to a user's message to mute."
|
|
|
|
|
- )
|
|
|
|
|
- return
|
|
|
|
|
- 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()
|
|
|
|
|
|
|
+@adminsOnly("can_restrict_members")
|
|
|
|
|
+async def mute(_, 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:
|
|
|
|
|
+ await message.reply_text(
|
|
|
|
|
+ "Provide a username or reply to a user's message to mute."
|
|
|
)
|
|
)
|
|
|
- await message.reply_text("Muted!")
|
|
|
|
|
- except Exception as e:
|
|
|
|
|
- await message.reply_text(str(e))
|
|
|
|
|
- e = traceback.format_exc()
|
|
|
|
|
- print(e)
|
|
|
|
|
|
|
+ return
|
|
|
|
|
+ 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!")
|
|
|
|
|
|
|
|
|
|
|
|
|
# Unmute members
|
|
# Unmute members
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.on_message(filters.command("unmute") & ~filters.edited)
|
|
@app.on_message(filters.command("unmute") & ~filters.edited)
|
|
|
-@capture_err
|
|
|
|
|
-async def unmute(_, message):
|
|
|
|
|
- try:
|
|
|
|
|
- from_user_id = message.from_user.id
|
|
|
|
|
- chat_id = message.chat.id
|
|
|
|
|
- permissions = await member_permissions(chat_id, from_user_id)
|
|
|
|
|
- if (
|
|
|
|
|
- "can_restrict_members" not in permissions
|
|
|
|
|
- and from_user_id not in SUDOERS
|
|
|
|
|
- ):
|
|
|
|
|
- await message.reply_text("You don't have enough permissions.")
|
|
|
|
|
- return
|
|
|
|
|
- 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:
|
|
|
|
|
- await message.reply_text(
|
|
|
|
|
- "Provide a username or reply to a user's message to Unmute"
|
|
|
|
|
- )
|
|
|
|
|
- return
|
|
|
|
|
- await message.chat.unban_member(user)
|
|
|
|
|
- await message.reply_text("Unmuted!")
|
|
|
|
|
- except Exception as e:
|
|
|
|
|
- await message.reply_text(str(e))
|
|
|
|
|
- e = traceback.format_exc()
|
|
|
|
|
- print(e)
|
|
|
|
|
|
|
+@adminsOnly("can_restrict_members")
|
|
|
|
|
+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:
|
|
|
|
|
+ await message.reply_text(
|
|
|
|
|
+ "Provide a username or reply to a user's message to Unmute"
|
|
|
|
|
+ )
|
|
|
|
|
+ return
|
|
|
|
|
+ await message.chat.unban_member(user)
|
|
|
|
|
+ await message.reply_text("Unmuted!")
|
|
|
|
|
|
|
|
|
|
|
|
|
# Ban deleted accounts
|
|
# Ban deleted accounts
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.on_message(filters.command("ban_ghosts"))
|
|
@app.on_message(filters.command("ban_ghosts"))
|
|
|
-async def ban_deleted_accounts(_, message):
|
|
|
|
|
- try:
|
|
|
|
|
- from_user_id = message.from_user.id
|
|
|
|
|
- chat_id = message.chat.id
|
|
|
|
|
- permissions = await member_permissions(chat_id, from_user_id)
|
|
|
|
|
- if "can_restrict_members" in permissions or from_user_id in SUDOERS:
|
|
|
|
|
- deleted_users = []
|
|
|
|
|
- banned_users = 0
|
|
|
|
|
- async for i in app.iter_chat_members(chat_id):
|
|
|
|
|
- if i.user.is_deleted:
|
|
|
|
|
- deleted_users.append(i.user.id)
|
|
|
|
|
- if len(deleted_users) > 0:
|
|
|
|
|
- for deleted_user in deleted_users:
|
|
|
|
|
- try:
|
|
|
|
|
- await message.chat.kick_member(deleted_user)
|
|
|
|
|
- except Exception as e:
|
|
|
|
|
- print(str(e))
|
|
|
|
|
- pass
|
|
|
|
|
- banned_users += 1
|
|
|
|
|
- await message.reply_text(
|
|
|
|
|
- f"Banned {banned_users} Deleted Accounts"
|
|
|
|
|
- )
|
|
|
|
|
- else:
|
|
|
|
|
- await message.reply_text("No Deleted Accounts In This Chat")
|
|
|
|
|
- return
|
|
|
|
|
- else:
|
|
|
|
|
- await message.reply_text("You Don't Have Enough Permissions")
|
|
|
|
|
- except Exception as e:
|
|
|
|
|
- await message.reply_text(str(e))
|
|
|
|
|
- e = traceback.format_exc()
|
|
|
|
|
- print(e)
|
|
|
|
|
|
|
+@adminsOnly("can_restrict_members")
|
|
|
|
|
+async def ban_deleted_accounts(_, message: Message):
|
|
|
|
|
+ chat_id = message.chat.id
|
|
|
|
|
+ deleted_users = []
|
|
|
|
|
+ banned_users = 0
|
|
|
|
|
+ async for i in app.iter_chat_members(chat_id):
|
|
|
|
|
+ if i.user.is_deleted:
|
|
|
|
|
+ deleted_users.append(i.user.id)
|
|
|
|
|
+ if len(deleted_users) > 0:
|
|
|
|
|
+ for deleted_user in deleted_users:
|
|
|
|
|
+ try:
|
|
|
|
|
+ await message.chat.kick_member(deleted_user)
|
|
|
|
|
+ except Exception:
|
|
|
|
|
+ pass
|
|
|
|
|
+ banned_users += 1
|
|
|
|
|
+ await message.reply_text(f"Banned {banned_users} Deleted Accounts")
|
|
|
|
|
+ else:
|
|
|
|
|
+ await message.reply_text("No Deleted Accounts In This Chat")
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.on_message(filters.command("warn") & ~filters.edited)
|
|
@app.on_message(filters.command("warn") & ~filters.edited)
|
|
|
-@capture_err
|
|
|
|
|
-async def warn_user(_, message):
|
|
|
|
|
|
|
+@adminsOnly("can_restrict_members")
|
|
|
|
|
+async def warn_user(_, message: Message):
|
|
|
if not message.reply_to_message:
|
|
if not message.reply_to_message:
|
|
|
await message.reply_text("Reply to a message to warn a user.")
|
|
await message.reply_text("Reply to a message to warn a user.")
|
|
|
return
|
|
return
|
|
|
- try:
|
|
|
|
|
- from_user_id = message.from_user.id
|
|
|
|
|
- chat_id = message.chat.id
|
|
|
|
|
- permissions = await member_permissions(chat_id, from_user_id)
|
|
|
|
|
- if "can_restrict_members" in permissions or from_user_id in SUDOERS:
|
|
|
|
|
- user_id = message.reply_to_message.from_user.id
|
|
|
|
|
- mention = message.reply_to_message.from_user.mention
|
|
|
|
|
- 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.")
|
|
|
|
|
- elif user_id == from_user_id:
|
|
|
|
|
- await message.reply_text("I wouldn't do that if i were you.")
|
|
|
|
|
|
|
+ chat_id = message.chat.id
|
|
|
|
|
+ user_id = message.reply_to_message.from_user.id
|
|
|
|
|
+ mention = message.reply_to_message.from_user.mention
|
|
|
|
|
+ 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.")
|
|
|
|
|
+ else:
|
|
|
|
|
+ if user_id in await list_members(chat_id):
|
|
|
|
|
+ warns = await get_warn(chat_id, await int_to_alpha(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)
|
|
|
|
|
- )
|
|
|
|
|
- if warns:
|
|
|
|
|
- warns = warns["warns"]
|
|
|
|
|
- else:
|
|
|
|
|
- warn = {"warns": 1}
|
|
|
|
|
- await add_warn(
|
|
|
|
|
- chat_id, await int_to_alpha(user_id), warn
|
|
|
|
|
- )
|
|
|
|
|
- await message.reply_text(
|
|
|
|
|
- f"Warned {mention} !, 1/3 warnings now."
|
|
|
|
|
- )
|
|
|
|
|
- return
|
|
|
|
|
- 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 add_warn(
|
|
|
|
|
- chat_id, await int_to_alpha(user_id), warn
|
|
|
|
|
- )
|
|
|
|
|
- await message.reply_text(
|
|
|
|
|
- f"Warned {mention} !, {warns+1}/3 warnings now."
|
|
|
|
|
- )
|
|
|
|
|
- else:
|
|
|
|
|
- await message.reply_text("This user isn't here.")
|
|
|
|
|
|
|
+ warn = {"warns": 1}
|
|
|
|
|
+ await add_warn(chat_id, await int_to_alpha(user_id), warn)
|
|
|
|
|
+ await message.reply_text(
|
|
|
|
|
+ f"Warned {mention} !, 1/3 warnings now."
|
|
|
|
|
+ )
|
|
|
|
|
+ return
|
|
|
|
|
+ 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 add_warn(chat_id, await int_to_alpha(user_id), warn)
|
|
|
|
|
+ await message.reply_text(
|
|
|
|
|
+ f"Warned {mention} !, {warns+1}/3 warnings now."
|
|
|
|
|
+ )
|
|
|
else:
|
|
else:
|
|
|
- await message.reply_text("You don't have enough permissions.")
|
|
|
|
|
- except Exception as e:
|
|
|
|
|
- await message.reply_text(str(e))
|
|
|
|
|
- e = traceback.format_exc()
|
|
|
|
|
- print(e)
|
|
|
|
|
|
|
+ await message.reply_text("This user isn't here.")
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+# Rmwarn
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+@app.on_message(filters.command("rmwarn") & ~filters.edited)
|
|
|
|
|
+@adminsOnly("can_restrict_members")
|
|
|
|
|
+async def remove_warning(_, message: Message):
|
|
|
|
|
+ if not message.reply_to_message:
|
|
|
|
|
+ await message.reply_text(
|
|
|
|
|
+ "Reply to a message to remove a user's warning."
|
|
|
|
|
+ )
|
|
|
|
|
+ return
|
|
|
|
|
+ user_id = message.reply_to_message.from_user.id
|
|
|
|
|
+ mention = message.reply_to_message.from_user.mention
|
|
|
|
|
+ chat_id = message.chat.id
|
|
|
|
|
+ warns = await get_warn(chat_id, await int_to_alpha(user_id))
|
|
|
|
|
+ if warns:
|
|
|
|
|
+ warns = warns["warns"]
|
|
|
|
|
+ if warns == 0 or not warns:
|
|
|
|
|
+ await message.reply_text(f"{mention} have no warnings.")
|
|
|
|
|
+ else:
|
|
|
|
|
+ warn = {"warns": warns - 1}
|
|
|
|
|
+ await add_warn(chat_id, await int_to_alpha(user_id), warn)
|
|
|
|
|
+ await message.reply_text(f"Removed warning of {mention}.")
|
|
|
|
|
|
|
|
|
|
|
|
|
# Rmwarns
|
|
# Rmwarns
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.on_message(filters.command("rmwarns") & ~filters.edited)
|
|
@app.on_message(filters.command("rmwarns") & ~filters.edited)
|
|
|
-@capture_err
|
|
|
|
|
-async def remove_warnings(_, message):
|
|
|
|
|
|
|
+@adminsOnly("can_restrict_members")
|
|
|
|
|
+async def remove_warnings(_, message: Message):
|
|
|
if not message.reply_to_message:
|
|
if not message.reply_to_message:
|
|
|
await message.reply_text(
|
|
await message.reply_text(
|
|
|
"Reply to a message to remove a user's warnings."
|
|
"Reply to a message to remove a user's warnings."
|
|
|
)
|
|
)
|
|
|
return
|
|
return
|
|
|
- try:
|
|
|
|
|
- from_user_id = message.from_user.id
|
|
|
|
|
- user_id = message.reply_to_message.from_user.id
|
|
|
|
|
- mention = message.reply_to_message.from_user.mention
|
|
|
|
|
- chat_id = message.chat.id
|
|
|
|
|
- permissions = await member_permissions(chat_id, from_user_id)
|
|
|
|
|
- if "can_restrict_members" in permissions or from_user_id in SUDOERS:
|
|
|
|
|
- warns = await get_warn(chat_id, await int_to_alpha(user_id))
|
|
|
|
|
- if warns:
|
|
|
|
|
- warns = warns["warns"]
|
|
|
|
|
- if warns == 0 or not warns:
|
|
|
|
|
- await message.reply_text(f"{mention} have no warnings.")
|
|
|
|
|
- else:
|
|
|
|
|
- await remove_warns(chat_id, await int_to_alpha(user_id))
|
|
|
|
|
- await message.reply_text(f"Removed warnings of {mention}.")
|
|
|
|
|
- else:
|
|
|
|
|
- await message.reply_text("You don't have enough permissions")
|
|
|
|
|
- except Exception as e:
|
|
|
|
|
- await message.reply_text(str(e))
|
|
|
|
|
- e = traceback.format_exc()
|
|
|
|
|
- print(e)
|
|
|
|
|
|
|
+ user_id = message.reply_to_message.from_user.id
|
|
|
|
|
+ mention = message.reply_to_message.from_user.mention
|
|
|
|
|
+ chat_id = message.chat.id
|
|
|
|
|
+ warns = await get_warn(chat_id, await int_to_alpha(user_id))
|
|
|
|
|
+ if warns:
|
|
|
|
|
+ warns = warns["warns"]
|
|
|
|
|
+ if warns == 0 or not warns:
|
|
|
|
|
+ await message.reply_text(f"{mention} have no warnings.")
|
|
|
|
|
+ else:
|
|
|
|
|
+ await remove_warns(chat_id, await int_to_alpha(user_id))
|
|
|
|
|
+ await message.reply_text(f"Removed warnings of {mention}.")
|
|
|
|
|
|
|
|
|
|
|
|
|
# Warns
|
|
# Warns
|
|
@@ -628,41 +470,32 @@ async def remove_warnings(_, 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):
|
|
|
|
|
|
|
+async def check_warns(_, message: Message):
|
|
|
if not message.reply_to_message:
|
|
if not message.reply_to_message:
|
|
|
await message.reply_text(
|
|
await message.reply_text(
|
|
|
"Reply to a message to check a user's warnings."
|
|
"Reply to a message to check a user's warnings."
|
|
|
)
|
|
)
|
|
|
return
|
|
return
|
|
|
- try:
|
|
|
|
|
- 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:
|
|
|
|
|
- await message.reply_text(f"{mention_user} have no warnings.")
|
|
|
|
|
- return
|
|
|
|
|
- await message.reply_text(
|
|
|
|
|
- f"{mention_user} have {warns}/3 warnings."
|
|
|
|
|
- )
|
|
|
|
|
- return
|
|
|
|
|
|
|
+ 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))
|
|
warns = await get_warn(chat_id, await int_to_alpha(user_id))
|
|
|
if warns:
|
|
if warns:
|
|
|
warns = warns["warns"]
|
|
warns = warns["warns"]
|
|
|
else:
|
|
else:
|
|
|
await message.reply_text(f"{mention_user} have no warnings.")
|
|
await message.reply_text(f"{mention_user} have no warnings.")
|
|
|
return
|
|
return
|
|
|
- await message.reply_text(
|
|
|
|
|
- f"{mention_from_user} have {warns}/3 warnings."
|
|
|
|
|
- )
|
|
|
|
|
- except Exception as e:
|
|
|
|
|
- await message.reply_text(str(e))
|
|
|
|
|
- e = traceback.format_exc()
|
|
|
|
|
- print(e)
|
|
|
|
|
|
|
+ await message.reply_text(f"{mention_user} have {warns}/3 warnings.")
|
|
|
|
|
+ return
|
|
|
|
|
+ warns = await get_warn(chat_id, await int_to_alpha(user_id))
|
|
|
|
|
+ if warns:
|
|
|
|
|
+ warns = warns["warns"]
|
|
|
|
|
+ else:
|
|
|
|
|
+ await message.reply_text(f"{mention_user} have no warnings.")
|
|
|
|
|
+ return
|
|
|
|
|
+ await message.reply_text(f"{mention_from_user} have {warns}/3 warnings.")
|
|
|
|
|
|
|
|
|
|
|
|
|
# Report
|
|
# Report
|