import os from traceback import format_exc from pyrogram import filters from pyrogram.types import Message from Powers import DEV_USERS, SUDO_USERS, WHITELIST_USERS, SUPPORT_STAFF, LOGGER from Powers.bot_class import Gojo from Powers.utils.custom_filters import command async def get_user_info(user, already=False): if not already: user = await app.get_users(user) if not user.first_name: return ["Deleted account", None] user_id = user.id username = user.username first_name = user.first_name mention = user.mention("Link") dc_id = user.dc_id photo_id = user.photo.big_file_id if user.photo else None karma = await user_global_karma(user_id) body = { "ID": user_id, "DC": dc_id, "Name": [first_name], "Username": [("@" + username) if username else "Null"], "Mention": [mention], } caption = section("User info", body) return [caption, photo_id] async def get_chat_info(chat, already=False): if not already: chat = await app.get_chat(chat) chat_id = chat.id username = chat.username title = chat.title type_ = chat.type is_scam = chat.is_scam description = chat.description members = chat.members_count is_restricted = chat.is_restricted link = f"[Link](t.me/{username})" if username else "Null" dc_id = chat.dc_id photo_id = chat.photo.big_file_id if chat.photo else None body = { "ID": chat_id, "DC": dc_id, "Type": type_, "Name": [title], "Username": [("@" + username) if username else "Null"], "Mention": [link], "Members": members, "Scam": is_scam, "Restricted": is_restricted, "Description": [description], } caption = section("Chat info", body) return [caption, photo_id] @app.on_message(command("info") & ~filters.edited) async def info_func(_, message: Message): if message.reply_to_message: user = message.reply_to_message.from_user.id elif not message.reply_to_message and len(message.command) == 1: user = message.from_user.id elif not message.reply_to_message and len(message.command) != 1: user = message.text.split(None, 1)[1] m = await message.reply_text("Processing") try: info_caption, photo_id = await get_user_info(user) except Exception as e: return await m.edit(str(e)) if not photo_id: return await m.edit(info_caption, disable_web_page_preview=True) photo = await app.download_media(photo_id) await message.reply_photo(photo, caption=info_caption, quote=False) await m.delete() os.remove(photo) @app.on_message(command("chat_info") & ~filters.edited) async def chat_info_func(_, message: Message): try: if len(message.command) > 2: return await message.reply_text( "**Usage:**/chat_info [USERNAME|ID]" ) if len(message.command) == 1: chat = message.chat.id elif len(message.command) == 2: chat = message.text.split(None, 1)[1] m = await message.reply_text("Processing") info_caption, photo_id = await get_chat_info(chat) if not photo_id: return await m.edit(info_caption, disable_web_page_preview=True) photo = await app.download_media(photo_id) await message.reply_photo(photo, caption=info_caption, quote=False) await m.delete() os.remove(photo) except Exception as e: await m.edit(e) __PLUGIN__ = "info" __alt_name__ = [ "info", "chinfo", ] __HELP__ = """/info - To get info about the user /chinfo - To get info about the chat"""