Spaces:
Runtime error
Runtime error
import time | |
from pyrogram import Client | |
from pyrogram.enums import ChatMemberStatus, ChatType | |
from pyrogram.raw.functions.channels import GetAdminedPublicChannels | |
from pyrogram.raw.functions.users import GetFullUser | |
from pyrogram.types import Message | |
from Hellbot.functions.formatter import readable_time | |
from Hellbot.functions.templates import statistics_templates, user_info_templates | |
from . import HelpMenu, Symbols, hellbot, on_message | |
async def count_stats(client: Client, message: Message): | |
hell = await hellbot.edit(message, "Processing...") | |
bots = 0 | |
users = 0 | |
groups = 0 | |
channels = 0 | |
super_groups = 0 | |
async for dialog in client.get_dialogs(): | |
if dialog.chat.type == ChatType.BOT: | |
bots += 1 | |
elif dialog.chat.type == ChatType.PRIVATE: | |
users += 1 | |
elif dialog.chat.type == ChatType.GROUP: | |
groups += 1 | |
elif dialog.chat.type == ChatType.SUPERGROUP: | |
super_groups += 1 | |
elif dialog.chat.type == ChatType.CHANNEL: | |
channels += 1 | |
else: | |
pass | |
total = bots + users + groups + super_groups + channels | |
await hell.edit( | |
f"**{client.me.mention}'π πΌππΊππ πΌππππ:**\n\n" | |
f" **{Symbols.anchor} π―ππππΊππΎ:** `{users}`\n" | |
f" **{Symbols.anchor} π¦πππππ:** `{groups}`\n" | |
f" **{Symbols.anchor} π²πππΎππ¦πππππ:** `{super_groups}`\n" | |
f" **{Symbols.anchor} π’ππΊπππΎπ π:** `{channels}`\n" | |
f" **{Symbols.anchor} π‘πππ:** `{bots}`\n\n" | |
f"**{Symbols.triangle_right} π³πππΊπ :** `{total}`\n" | |
) | |
async def mystats(client: Client, message: Message): | |
hell = await hellbot.edit(message, "Processing...") | |
bots = 0 | |
ch_admin = 0 | |
ch_owner = 0 | |
channels = 0 | |
gc_admin = 0 | |
gc_owner = 0 | |
groups = 0 | |
unread_mention = 0 | |
unread_msg = 0 | |
users = 0 | |
start = time.time() | |
async for dialog in client.get_dialogs(): | |
if dialog.chat.type == ChatType.CHANNEL: | |
meInChat = await dialog.chat.get_member(client.me.id) | |
channels += 1 | |
if meInChat.status == ChatMemberStatus.OWNER: | |
ch_owner += 1 | |
elif meInChat.status == ChatMemberStatus.ADMINISTRATOR: | |
ch_admin += 1 | |
elif dialog.chat.type == ChatType.GROUP: | |
meInChat = await dialog.chat.get_member(client.me.id) | |
groups += 1 | |
if meInChat.status == ChatMemberStatus.OWNER: | |
gc_owner += 1 | |
elif meInChat.status == ChatMemberStatus.ADMINISTRATOR: | |
gc_admin += 1 | |
elif dialog.chat.type == ChatType.SUPERGROUP: | |
meInChat = await dialog.chat.get_member(client.me.id) | |
groups += 1 | |
if meInChat.status == ChatMemberStatus.OWNER: | |
gc_owner += 1 | |
elif meInChat.status == ChatMemberStatus.ADMINISTRATOR: | |
gc_admin += 1 | |
elif dialog.chat.type == ChatType.PRIVATE: | |
users += 1 | |
elif dialog.chat.type == ChatType.BOT: | |
bots += 1 | |
unread_mention += dialog.unread_mentions_count | |
unread_msg += dialog.unread_messages_count | |
time_taken = readable_time(int(time.time() - start)) or "0 seconds" | |
await hell.edit( | |
await statistics_templates( | |
name=client.me.mention, | |
channels=channels, | |
ch_admin=ch_admin, | |
ch_owner=ch_owner, | |
groups=groups, | |
gc_admin=gc_admin, | |
gc_owner=gc_owner, | |
users=users, | |
bots=bots, | |
unread_msg=unread_msg, | |
unread_mention=unread_mention, | |
time_taken=time_taken, | |
) | |
) | |
async def reserved(client: Client, message: Message): | |
hell = await hellbot.edit(message, "Processing...") | |
result = await client.invoke(GetAdminedPublicChannels()) | |
outStr = f"π **{client.me.mention}'π ππΎππΎπππΎπ½ πππΎπππΊππΎπ:**\n\n" | |
for chat in result.chats: | |
f" {Symbols.bullet} {chat.title} - **{chat.username}**\n" | |
await hell.edit(outStr) | |
async def userInfo(client: Client, message: Message): | |
if not message.reply_to_message: | |
if len(message.command) < 2: | |
return await hellbot.error(message, "Reply to a user or give username/id to get their info.") | |
try: | |
user = await client.get_users(message.command[1]) | |
except Exception as e: | |
return await hellbot.error(message, str(e)) | |
else: | |
user = message.reply_to_message.from_user | |
hell = await hellbot.edit(message, f"Getting info of {user.mention}...") | |
try: | |
resolved = await client.resolve_peer(user.id) | |
fullUser = await client.invoke(GetFullUser(id=resolved)) | |
bio = fullUser.about | |
except: | |
bio = None | |
total_pfp = await client.get_chat_photos_count(user.id) | |
common_chats = len(await user.get_common_chats()) | |
user_info = await user_info_templates( | |
mention=user.mention, | |
firstName=user.first_name, | |
lastName=user.last_name, | |
userId=user.id, | |
bio=bio, | |
dcId=user.dc_id, | |
totalPictures=total_pfp, | |
isRestricted=user.is_restricted, | |
isVerified=user.is_verified, | |
isBot=user.is_bot, | |
commonGroups=common_chats, | |
) | |
if user.photo: | |
async for photo in client.get_chat_photos(user.id, 1): | |
await hell.delete() | |
await client.send_photo( | |
message.chat.id, | |
photo.file_id, | |
caption=user_info, | |
reply_to_message_id=message.id, | |
disable_notification=True, | |
) | |
return | |
else: | |
await hell.edit(user_info, disable_web_page_preview=True) | |
HelpMenu("statistics").add( | |
"count", None, "A brief overview of the number of chats I am in." | |
).add( | |
"stats", None, "A detailed overview of the number of chats I am in." | |
).add( | |
"reserved", None, "List of all the public usernames in my possession." | |
).add( | |
"info", "<reply> or <username/id>", "Get the user's detailed info.", "info @ForGo10God" | |
).info( | |
"Statistics Module" | |
).done() | |