| | import platform |
| | from sys import version as pyver |
| |
|
| | import psutil |
| | from pyrogram import __version__ as pyrover |
| | from pyrogram import filters |
| | from pyrogram.errors import MessageIdInvalid |
| | from pyrogram.types import Message |
| |
|
| | import config |
| | from Devine import app |
| | from Devine.core.userbot import assistants |
| | from Devine.misc import SUDOERS, mongodb |
| | from Devine.plugins import ALL_MODULES |
| | from Devine.utils.database import get_served_chats, get_served_users, get_sudoers |
| | from Devine.utils.decorators.language import language, languageCB |
| | from Devine.utils.inline.stats import back_stats_buttons, stats_buttons |
| | from config import BANNED_USERS |
| | from pytgcalls.__version__ import __version__ as pytgver |
| |
|
| | @app.on_message(filters.command(["stats"]) & filters.group & ~BANNED_USERS) |
| | @language |
| | async def stats_global(client, message: Message, _): |
| | if message.from_user.id not in SUDOERS and message.from_user.id != config.OWNER_ID: |
| | return |
| | upl = stats_buttons(_, True if message.from_user.id in SUDOERS else False) |
| | await message.reply_text( |
| | text=_["gstats_2"].format(app.mention), |
| | reply_markup=upl, |
| | ) |
| |
|
| | @app.on_callback_query(filters.regex("stats_back") & ~BANNED_USERS) |
| | @languageCB |
| | async def home_stats(client, CallbackQuery, _): |
| | upl = stats_buttons(_, True if CallbackQuery.from_user.id in SUDOERS else False) |
| | await CallbackQuery.edit_message_text( |
| | text=_["gstats_2"].format(app.mention), |
| | reply_markup=upl, |
| | ) |
| |
|
| | @app.on_callback_query(filters.regex("TopOverall") & ~BANNED_USERS) |
| | @languageCB |
| | async def overall_stats(client, CallbackQuery, _): |
| | await CallbackQuery.answer() |
| | upl = back_stats_buttons(_) |
| | try: |
| | await CallbackQuery.answer() |
| | except: |
| | pass |
| | await CallbackQuery.edit_message_text(_["gstats_1"].format(app.mention)) |
| | served_chats = len(await get_served_chats()) |
| | served_users = len(await get_served_users()) |
| | text = _["gstats_3"].format( |
| | app.mention, |
| | len(assistants), |
| | len(BANNED_USERS), |
| | served_chats, |
| | served_users, |
| | len(ALL_MODULES), |
| | len(SUDOERS), |
| | config.AUTO_LEAVING_ASSISTANT, |
| | config.DURATION_LIMIT_MIN, |
| | ) |
| | await CallbackQuery.edit_message_text(text, reply_markup=upl) |
| |
|
| | @app.on_callback_query(filters.regex("bot_stats_sudo")) |
| | @languageCB |
| | async def bot_stats(client, CallbackQuery, _): |
| | if CallbackQuery.from_user.id not in SUDOERS: |
| | return await CallbackQuery.answer(_["gstats_4"], show_alert=True) |
| | upl = back_stats_buttons(_) |
| | try: |
| | await CallbackQuery.answer() |
| | except: |
| | pass |
| | await CallbackQuery.edit_message_text(_["gstats_1"].format(app.mention)) |
| | p_core = psutil.cpu_count(logical=False) |
| | t_core = psutil.cpu_count(logical=True) |
| | ram = str(round(psutil.virtual_memory().total / (1024.0**3))) + " ɢʙ" |
| | try: |
| | cpu_freq = psutil.cpu_freq().current |
| | if cpu_freq >= 1000: |
| | cpu_freq = f"{round(cpu_freq / 1000, 2)}ɢʜᴢ" |
| | else: |
| | cpu_freq = f"{round(cpu_freq, 2)}ᴍʜᴢ" |
| | except: |
| | cpu_freq = "ғᴀɪʟᴇᴅ ᴛᴏ ғᴇᴛᴄʜ" |
| | hdd = psutil.disk_usage("/") |
| | total = hdd.total / (1024.0**3) |
| | used = hdd.used / (1024.0**3) |
| | free = hdd.free / (1024.0**3) |
| | call = await mongodb.command("dbstats") |
| | datasize = call["dataSize"] / 1024 |
| | storage = call["storageSize"] / 1024 |
| | served_chats = len(await get_served_chats()) |
| | served_users = len(await get_served_users()) |
| | text = _["gstats_5"].format( |
| | app.mention, |
| | len(ALL_MODULES), |
| | platform.system(), |
| | ram, |
| | p_core, |
| | t_core, |
| | cpu_freq, |
| | pyver.split()[0], |
| | pyrover, |
| | pytgver, |
| | str(total)[:4], |
| | str(used)[:4], |
| | str(free)[:4], |
| | served_chats, |
| | served_users, |
| | len(BANNED_USERS), |
| | len(await get_sudoers()), |
| | str(datasize)[:6], |
| | storage, |
| | call["collections"], |
| | call["objects"], |
| | ) |
| | await CallbackQuery.edit_message_text(text, reply_markup=upl) |
| |
|