|
|
@@ -1,7 +1,7 @@
|
|
|
"""
|
|
|
MIT License
|
|
|
|
|
|
-Copyright (c) 2021 TheHamkerCat
|
|
|
+Copyright (c) 2023 TheHamkerCat
|
|
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
|
of this software and associated documentation files (the "Software"), to deal
|
|
|
@@ -23,17 +23,13 @@ SOFTWARE.
|
|
|
"""
|
|
|
import asyncio
|
|
|
import re
|
|
|
-
|
|
|
from contextlib import suppress
|
|
|
from time import time
|
|
|
-from pyrogram.errors import FloodWait
|
|
|
+
|
|
|
from pyrogram import filters
|
|
|
-from pyrogram.types import (
|
|
|
- CallbackQuery,
|
|
|
- ChatMemberUpdated,
|
|
|
- ChatPermissions,
|
|
|
- Message,
|
|
|
-)
|
|
|
+from pyrogram.enums import ChatMembersFilter, ChatType
|
|
|
+from pyrogram.errors import FloodWait
|
|
|
+from pyrogram.types import CallbackQuery, ChatMemberUpdated, ChatPermissions, Message
|
|
|
|
|
|
from wbb import BOT_ID, SUDOERS, app, log
|
|
|
from wbb.core.decorators.errors import capture_err
|
|
|
@@ -45,11 +41,7 @@ from wbb.utils.dbfunctions import (
|
|
|
remove_warns,
|
|
|
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"
|
|
|
__HELP__ = """/ban - Ban A User
|
|
|
@@ -82,7 +74,7 @@ __HELP__ = """/ban - Ban A User
|
|
|
async def member_permissions(chat_id: int, user_id: int):
|
|
|
perms = []
|
|
|
try:
|
|
|
- member = await app.get_chat_member(chat_id, user_id)
|
|
|
+ member = (await app.get_chat_member(chat_id, user_id)).privileges
|
|
|
except Exception:
|
|
|
return []
|
|
|
if member.can_post_messages:
|
|
|
@@ -101,8 +93,8 @@ async def member_permissions(chat_id: int, user_id: int):
|
|
|
perms.append("can_invite_users")
|
|
|
if member.can_pin_messages:
|
|
|
perms.append("can_pin_messages")
|
|
|
- if member.can_manage_voice_chats:
|
|
|
- perms.append("can_manage_voice_chats")
|
|
|
+ if member.can_manage_video_chats:
|
|
|
+ perms.append("can_manage_video_chats")
|
|
|
return perms
|
|
|
|
|
|
|
|
|
@@ -122,8 +114,8 @@ async def list_admins(chat_id: int):
|
|
|
"last_updated_at": time(),
|
|
|
"data": [
|
|
|
member.user.id
|
|
|
- async for member in app.iter_chat_members(
|
|
|
- chat_id, filter="administrators"
|
|
|
+ async for member in app.get_chat_members(
|
|
|
+ chat_id, filter=ChatMembersFilter.ADMINISTRATORS
|
|
|
)
|
|
|
],
|
|
|
}
|
|
|
@@ -140,8 +132,8 @@ async def admin_cache_func(_, cmu: ChatMemberUpdated):
|
|
|
"last_updated_at": time(),
|
|
|
"data": [
|
|
|
member.user.id
|
|
|
- async for member in app.iter_chat_members(
|
|
|
- cmu.chat.id, filter="administrators"
|
|
|
+ async for member in app.get_chat_members(
|
|
|
+ cmu.chat.id, filter=ChatMembersFilter.ADMINISTRATORS
|
|
|
)
|
|
|
],
|
|
|
}
|
|
|
@@ -151,7 +143,7 @@ async def admin_cache_func(_, cmu: ChatMemberUpdated):
|
|
|
# Purge Messages
|
|
|
|
|
|
|
|
|
-@app.on_message(filters.command("purge") & ~filters.edited & ~filters.private)
|
|
|
+@app.on_message(filters.command("purge") & ~filters.private)
|
|
|
@adminsOnly("can_delete_messages")
|
|
|
async def purgeFunc(_, message: Message):
|
|
|
repliedmsg = message.reply_to_message
|
|
|
@@ -162,18 +154,18 @@ async def purgeFunc(_, message: Message):
|
|
|
|
|
|
cmd = message.command
|
|
|
if len(cmd) > 1 and cmd[1].isdigit():
|
|
|
- purge_to = repliedmsg.message_id + int(cmd[1])
|
|
|
- if purge_to > message.message_id:
|
|
|
- purge_to = message.message_id
|
|
|
+ purge_to = repliedmsg.id + int(cmd[1])
|
|
|
+ if purge_to > message.id:
|
|
|
+ purge_to = message.id
|
|
|
else:
|
|
|
- purge_to = message.message_id
|
|
|
+ purge_to = message.id
|
|
|
|
|
|
chat_id = message.chat.id
|
|
|
message_ids = []
|
|
|
|
|
|
for message_id in range(
|
|
|
- repliedmsg.message_id,
|
|
|
- purge_to,
|
|
|
+ repliedmsg.id,
|
|
|
+ purge_to,
|
|
|
):
|
|
|
message_ids.append(message_id)
|
|
|
|
|
|
@@ -200,18 +192,14 @@ async def purgeFunc(_, message: Message):
|
|
|
# Kick members
|
|
|
|
|
|
|
|
|
-@app.on_message(
|
|
|
- filters.command(["kick", "dkick"]) & ~filters.edited & ~filters.private
|
|
|
-)
|
|
|
+@app.on_message(filters.command(["kick", "dkick"]) & ~filters.private)
|
|
|
@adminsOnly("can_restrict_members")
|
|
|
async def kickFunc(_, message: Message):
|
|
|
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 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:
|
|
|
return await message.reply_text("You Wanna Kick The Elevated One?")
|
|
|
if user_id in (await list_admins(message.chat.id)):
|
|
|
@@ -234,11 +222,7 @@ async def kickFunc(_, message: Message):
|
|
|
# Ban members
|
|
|
|
|
|
|
|
|
-@app.on_message(
|
|
|
- filters.command(["ban", "dban", "tban"])
|
|
|
- & ~filters.edited
|
|
|
- & ~filters.private
|
|
|
-)
|
|
|
+@app.on_message(filters.command(["ban", "dban", "tban"]) & ~filters.private)
|
|
|
@adminsOnly("can_restrict_members")
|
|
|
async def banFunc(_, message: Message):
|
|
|
user_id, reason = await extract_user_and_reason(message, sender_chat=True)
|
|
|
@@ -246,13 +230,9 @@ async def banFunc(_, message: 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 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:
|
|
|
- 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)):
|
|
|
return await message.reply_text(
|
|
|
"I can't ban an admin, You know the rules, so do i."
|
|
|
@@ -297,7 +277,7 @@ async def banFunc(_, message: Message):
|
|
|
# Unban members
|
|
|
|
|
|
|
|
|
-@app.on_message(filters.command("unban") & ~filters.edited & ~filters.private)
|
|
|
+@app.on_message(filters.command("unban") & ~filters.private)
|
|
|
@adminsOnly("can_restrict_members")
|
|
|
async def unban_func(_, message: Message):
|
|
|
# we don't need reasons for unban, also, we
|
|
|
@@ -325,21 +305,15 @@ async def unban_func(_, message: Message):
|
|
|
# Ban users listed in a message
|
|
|
|
|
|
|
|
|
-@app.on_message(
|
|
|
- SUDOERS & filters.command("listban") & ~filters.edited & ~filters.private
|
|
|
-)
|
|
|
+@app.on_message(SUDOERS & filters.command("listban") & ~filters.private)
|
|
|
async def list_ban_(c, message: Message):
|
|
|
userid, msglink_reason = await extract_user_and_reason(message)
|
|
|
if not userid or not msglink_reason:
|
|
|
return await message.reply_text(
|
|
|
"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
|
|
|
lreason = msglink_reason.split()
|
|
|
messagelink, reason = lreason[0], " ".join(lreason[1:])
|
|
|
@@ -352,9 +326,7 @@ async def list_ban_(c, message: Message):
|
|
|
if userid == BOT_ID:
|
|
|
return await message.reply_text("I can't ban myself.")
|
|
|
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("/")
|
|
|
uname, mid = splitted[-2], int(splitted[-1])
|
|
|
m = await message.reply_text(
|
|
|
@@ -391,9 +363,7 @@ async def list_ban_(c, message: Message):
|
|
|
# Unban users listed in a message
|
|
|
|
|
|
|
|
|
-@app.on_message(
|
|
|
- SUDOERS & filters.command("listunban") & ~filters.edited & ~filters.private
|
|
|
-)
|
|
|
+@app.on_message(SUDOERS & filters.command("listunban") & ~filters.private)
|
|
|
async def list_unban_(c, message: Message):
|
|
|
userid, msglink = await extract_user_and_reason(message)
|
|
|
if not userid or not msglink:
|
|
|
@@ -401,9 +371,7 @@ async def list_unban_(c, message: Message):
|
|
|
"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")
|
|
|
|
|
|
splitted = msglink.split("/")
|
|
|
@@ -440,7 +408,7 @@ async def list_unban_(c, message: Message):
|
|
|
# Delete messages
|
|
|
|
|
|
|
|
|
-@app.on_message(filters.command("del") & ~filters.edited & ~filters.private)
|
|
|
+@app.on_message(filters.command("del") & ~filters.private)
|
|
|
@adminsOnly("can_delete_messages")
|
|
|
async def deleteFunc(_, message: Message):
|
|
|
if not message.reply_to_message:
|
|
|
@@ -452,11 +420,7 @@ async def deleteFunc(_, message: Message):
|
|
|
# Promote Members
|
|
|
|
|
|
|
|
|
-@app.on_message(
|
|
|
- filters.command(["promote", "fullpromote"])
|
|
|
- & ~filters.edited
|
|
|
- & ~filters.private
|
|
|
-)
|
|
|
+@app.on_message(filters.command(["promote", "fullpromote"]) & ~filters.private)
|
|
|
@adminsOnly("can_promote_members")
|
|
|
async def promoteFunc(_, message: Message):
|
|
|
user_id = await extract_user(message)
|
|
|
@@ -478,7 +442,7 @@ async def promoteFunc(_, message: Message):
|
|
|
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,
|
|
|
+ can_manage_video_chats=bot.can_manage_video_chats,
|
|
|
)
|
|
|
return await message.reply_text(f"Fully Promoted! {umention}")
|
|
|
|
|
|
@@ -491,7 +455,7 @@ async def promoteFunc(_, message: Message):
|
|
|
can_pin_messages=False,
|
|
|
can_promote_members=False,
|
|
|
can_manage_chat=bot.can_manage_chat,
|
|
|
- can_manage_voice_chats=bot.can_manage_voice_chats,
|
|
|
+ can_manage_video_chats=bot.can_manage_video_chats,
|
|
|
)
|
|
|
await message.reply_text(f"Promoted! {umention}")
|
|
|
|
|
|
@@ -499,7 +463,7 @@ async def promoteFunc(_, message: Message):
|
|
|
# Demote Member
|
|
|
|
|
|
|
|
|
-@app.on_message(filters.command("demote") & ~filters.edited & ~filters.private)
|
|
|
+@app.on_message(filters.command("demote") & ~filters.private)
|
|
|
@adminsOnly("can_promote_members")
|
|
|
async def demote(_, message: Message):
|
|
|
user_id = await extract_user(message)
|
|
|
@@ -520,7 +484,7 @@ async def demote(_, message: Message):
|
|
|
can_pin_messages=False,
|
|
|
can_promote_members=False,
|
|
|
can_manage_chat=False,
|
|
|
- can_manage_voice_chats=False,
|
|
|
+ can_manage_video_chats=False,
|
|
|
)
|
|
|
umention = (await app.get_users(user_id)).mention
|
|
|
await message.reply_text(f"Demoted! {umention}")
|
|
|
@@ -529,9 +493,7 @@ async def demote(_, message: Message):
|
|
|
# Pin Messages
|
|
|
|
|
|
|
|
|
-@app.on_message(
|
|
|
- filters.command(["pin", "unpin"]) & ~filters.edited & ~filters.private
|
|
|
-)
|
|
|
+@app.on_message(filters.command(["pin", "unpin"]) & ~filters.private)
|
|
|
@adminsOnly("can_pin_messages")
|
|
|
async def pin(_, message: Message):
|
|
|
if not message.reply_to_message:
|
|
|
@@ -556,9 +518,7 @@ async def pin(_, message: Message):
|
|
|
# Mute members
|
|
|
|
|
|
|
|
|
-@app.on_message(
|
|
|
- filters.command(["mute", "tmute"]) & ~filters.edited & ~filters.private
|
|
|
-)
|
|
|
+@app.on_message(filters.command(["mute", "tmute"]) & ~filters.private)
|
|
|
@adminsOnly("can_restrict_members")
|
|
|
async def mute(_, message: Message):
|
|
|
user_id, reason = await extract_user_and_reason(message)
|
|
|
@@ -567,15 +527,13 @@ async def mute(_, message: Message):
|
|
|
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(
|
|
|
- "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)):
|
|
|
return await message.reply_text(
|
|
|
"I can't mute an admin, You know the rules, so do i."
|
|
|
)
|
|
|
mention = (await app.get_users(user_id)).mention
|
|
|
- keyboard = ikb({"🚨 Unmute 🚨": f"unmute_{user_id}"})
|
|
|
+ keyboard = ikb({"🚨 Unmute 🚨": f"unmute_{user_id}"})
|
|
|
msg = (
|
|
|
f"**Muted User:** {mention}\n"
|
|
|
f"**Muted By:** {message.from_user.mention if message.from_user else 'Anon'}\n"
|
|
|
@@ -610,7 +568,7 @@ async def mute(_, message: Message):
|
|
|
# Unmute members
|
|
|
|
|
|
|
|
|
-@app.on_message(filters.command("unmute") & ~filters.edited & ~filters.private)
|
|
|
+@app.on_message(filters.command("unmute") & ~filters.private)
|
|
|
@adminsOnly("can_restrict_members")
|
|
|
async def unmute(_, message: Message):
|
|
|
user_id = await extract_user(message)
|
|
|
@@ -624,11 +582,7 @@ async def unmute(_, message: Message):
|
|
|
# Ban deleted accounts
|
|
|
|
|
|
|
|
|
-@app.on_message(
|
|
|
- filters.command("ban_ghosts")
|
|
|
- & ~filters.private
|
|
|
- & ~filters.edited
|
|
|
-)
|
|
|
+@app.on_message(filters.command("ban_ghosts") & ~filters.private)
|
|
|
@adminsOnly("can_restrict_members")
|
|
|
async def ban_deleted_accounts(_, message: Message):
|
|
|
chat_id = message.chat.id
|
|
|
@@ -636,7 +590,7 @@ async def ban_deleted_accounts(_, message: Message):
|
|
|
banned_users = 0
|
|
|
m = await message.reply("Finding ghosts...")
|
|
|
|
|
|
- async for i in app.iter_chat_members(chat_id):
|
|
|
+ async for i in app.get_chat_members(chat_id):
|
|
|
if i.user.is_deleted:
|
|
|
deleted_users.append(i.user.id)
|
|
|
if len(deleted_users) > 0:
|
|
|
@@ -651,9 +605,7 @@ async def ban_deleted_accounts(_, message: Message):
|
|
|
await m.edit("There are no deleted accounts in this chat")
|
|
|
|
|
|
|
|
|
-@app.on_message(
|
|
|
- filters.command(["warn", "dwarn"]) & ~filters.edited & ~filters.private
|
|
|
-)
|
|
|
+@app.on_message(filters.command(["warn", "dwarn"]) & ~filters.private)
|
|
|
@adminsOnly("can_restrict_members")
|
|
|
async def warn_user(_, message: Message):
|
|
|
user_id, reason = await extract_user_and_reason(message)
|
|
|
@@ -661,13 +613,9 @@ async def warn_user(_, message: 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 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:
|
|
|
- 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)):
|
|
|
return await message.reply_text(
|
|
|
"I can't warn an admin, You know the rules, so do i."
|
|
|
@@ -686,9 +634,7 @@ async def warn_user(_, message: Message):
|
|
|
await message.reply_to_message.delete()
|
|
|
if warns >= 2:
|
|
|
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))
|
|
|
else:
|
|
|
warn = {"warns": warns + 1}
|
|
|
@@ -730,9 +676,7 @@ async def remove_warning(_, cq: CallbackQuery):
|
|
|
# Rmwarns
|
|
|
|
|
|
|
|
|
-@app.on_message(
|
|
|
- filters.command("rmwarns") & ~filters.edited & ~filters.private
|
|
|
-)
|
|
|
+@app.on_message(filters.command("rmwarns") & ~filters.private)
|
|
|
@adminsOnly("can_restrict_members")
|
|
|
async def remove_warnings(_, message: Message):
|
|
|
if not message.reply_to_message:
|
|
|
@@ -755,7 +699,7 @@ async def remove_warnings(_, message: Message):
|
|
|
# Warns
|
|
|
|
|
|
|
|
|
-@app.on_message(filters.command("warns") & ~filters.edited & ~filters.private)
|
|
|
+@app.on_message(filters.command("warns") & ~filters.private)
|
|
|
@capture_err
|
|
|
async def check_warns(_, message: Message):
|
|
|
user_id = await extract_user(message)
|
|
|
@@ -774,19 +718,13 @@ async def check_warns(_, message: Message):
|
|
|
|
|
|
|
|
|
@app.on_message(
|
|
|
- (
|
|
|
- filters.command("report")
|
|
|
- | filters.command(["admins", "admin"], prefixes="@")
|
|
|
- )
|
|
|
- & ~filters.edited
|
|
|
+ (filters.command("report") | filters.command(["admins", "admin"], prefixes="@"))
|
|
|
& ~filters.private
|
|
|
)
|
|
|
@capture_err
|
|
|
async def report_user(_, 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_id = reply.from_user.id if reply.from_user else reply.sender_chat.id
|
|
|
@@ -797,7 +735,11 @@ async def report_user(_, message):
|
|
|
list_of_admins = await list_admins(message.chat.id)
|
|
|
linked_chat = (await app.get_chat(message.chat.id)).linked_chat
|
|
|
if linked_chat is not None:
|
|
|
- if reply_id in list_of_admins or reply_id == message.chat.id or reply_id == linked_chat.id:
|
|
|
+ if (
|
|
|
+ reply_id in list_of_admins
|
|
|
+ or reply_id == message.chat.id
|
|
|
+ or reply_id == linked_chat.id
|
|
|
+ ):
|
|
|
return await message.reply_text(
|
|
|
"Do you know that the user you are replying is an admin ?"
|
|
|
)
|
|
|
@@ -807,10 +749,12 @@ async def report_user(_, message):
|
|
|
"Do you know that the user you are replying is an admin ?"
|
|
|
)
|
|
|
|
|
|
- user_mention = reply.from_user.mention if reply.from_user else reply.sender_chat.title
|
|
|
+ user_mention = (
|
|
|
+ reply.from_user.mention if reply.from_user else reply.sender_chat.title
|
|
|
+ )
|
|
|
text = f"Reported {user_mention} to admins!"
|
|
|
admin_data = await app.get_chat_members(
|
|
|
- chat_id=message.chat.id, filter="administrators"
|
|
|
+ chat_id=message.chat.id, filter=ChatMembersFilter.ADMINISTRATORS
|
|
|
) # will it giv floods ?
|
|
|
for admin in admin_data:
|
|
|
if admin.user.is_bot or admin.user.is_deleted:
|
|
|
@@ -821,15 +765,17 @@ async def report_user(_, message):
|
|
|
await message.reply_to_message.reply_text(text)
|
|
|
|
|
|
|
|
|
-@app.on_message(filters.command("invite") & ~filters.edited)
|
|
|
+@app.on_message(filters.command("invite"))
|
|
|
@adminsOnly("can_invite_users")
|
|
|
async def invite(_, message):
|
|
|
- if message.chat.type in ["group", "supergroup"]:
|
|
|
- link = (await app.get_chat(message.chat.id)).invite_link
|
|
|
+ if message.chat.type in [ChatType.GROUP, ChatType.SUPERGROUP]:
|
|
|
+ link = (await app.get_chat(message.chat.id)).invite_link
|
|
|
if not link:
|
|
|
link = await app.export_chat_invite_link(message.chat.id)
|
|
|
text = f"Here's This Group Invite Link.\n\n{link}"
|
|
|
if message.reply_to_message:
|
|
|
- await message.reply_to_message.reply_text(text, disable_web_page_preview=True)
|
|
|
+ await message.reply_to_message.reply_text(
|
|
|
+ text, disable_web_page_preview=True
|
|
|
+ )
|
|
|
else:
|
|
|
await message.reply_text(text, disable_web_page_preview=True)
|