|
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) |
|
|