import contextlib
from asyncio import sleep
from pyrogram.enums import ChatType
from pyrogram.errors import (
ChatAdminRequired,
FloodWait,
PeerIdInvalid,
UserAdminInvalid,
UsernameInvalid,
)
from pyrogram.types import Chat
from pagermaid import log
from pagermaid.listener import listener
from pagermaid.scheduler import add_delete_message_job
from pagermaid.services import bot
from pagermaid.enums import Message
from pagermaid.utils import lang
def mention_group(chat: Chat):
return (
f'{chat.title}'
if chat.username
else f"{chat.title}
"
)
async def ban_one(chat: Chat, uid):
await bot.ban_chat_member(chat.id, uid)
async def delete_all_messages(chat: Chat, uid):
await bot.delete_user_history(chat.id, uid)
async def check_uid(chat: Chat, uid: str):
channel = False
with contextlib.suppress(ValueError):
uid = int(uid)
if uid < 0:
channel = True
try:
await bot.get_chat_member(chat.id, uid)
except ChatAdminRequired:
with contextlib.suppress(PeerIdInvalid):
chat = await bot.get_chat(uid)
uid = chat.id
if chat.type in [ChatType.CHANNEL, ChatType.SUPERGROUP, ChatType.GROUP]:
channel = True
return uid, channel
async def get_uid(chat: Chat, message: Message):
uid = None
channel = False
delete_all = True
sender = None
if reply := message.reply_to_message:
if sender := reply.from_user:
uid = sender.id
if sender := reply.sender_chat:
uid = sender.id
channel = True
if message.arguments:
delete_all = False
elif len(message.parameter) == 2:
uid, channel = await check_uid(chat, message.parameter[0])
delete_all = False
elif len(message.parameter) == 1:
uid, channel = await check_uid(chat, message.parameter[0])
return uid, channel, delete_all, sender
@listener(
command="sb",
description=lang("sb_des"),
need_admin=True,
groups_only=True,
parameters="[reply|id|username>