Spaces:
Running
Running
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] | |
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) | |
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""" | |