|
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 InputMediaPhoto, Message |
|
from pytgcalls.__version__ import __version__ as pytgver |
|
|
|
import config |
|
from DragMusic import app |
|
from DragMusic.core.userbot import assistants |
|
from DragMusic.misc import SUDOERS, mongodb |
|
from DragMusic.plugins import ALL_MODULES |
|
from DragMusic.utils.database import get_served_chats, get_served_users, get_sudoers |
|
from DragMusic.utils.decorators.language import language, languageCB |
|
from DragMusic.utils.inline.stats import back_stats_buttons, stats_buttons |
|
from config import BANNED_USERS, OWNER_ID |
|
|
|
@app.on_message(filters.command(["stats", "gstats"]) & ~BANNED_USERS) |
|
@language |
|
async def stats_global(client, message: Message, _): |
|
|
|
if message.from_user.id not in SUDOERS and message.from_user.id != OWNER_ID: |
|
|
|
if message.chat.username != "dragbackup": |
|
return await message.reply_text( |
|
"Tʜɪs ᴄᴏᴍᴍᴀɴᴅ ᴄᴀɴ ᴏɴʟʏ ʙᴇ ᴜsᴇᴅ ɪɴ ᴛʜᴇ @ᴅʀᴀɢʙᴀᴄᴋᴜᴘ .." |
|
) |
|
|
|
upl = stats_buttons(_, True) |
|
await message.reply_photo( |
|
photo=config.STATS_IMG_URL, |
|
caption=_["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, _): |
|
|
|
if CallbackQuery.from_user.id not in SUDOERS and CallbackQuery.from_user.id != OWNER_ID: |
|
|
|
if CallbackQuery.message.chat.username != "dragbackup": |
|
return await CallbackQuery.answer("Tʜɪs ᴄᴏᴍᴍᴀɴᴅ ᴄᴀɴ ᴏɴʟʏ ʙᴇ ᴜsᴇᴅ ɪɴ ᴛʜᴇ @ᴅʀᴀɢʙᴀᴄᴋᴜᴘ ɢʀᴏᴜᴘ.", show_alert=True) |
|
|
|
upl = stats_buttons(_, True) |
|
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, _): |
|
|
|
if CallbackQuery.from_user.id not in SUDOERS and CallbackQuery.from_user.id != OWNER_ID: |
|
|
|
if CallbackQuery.message.chat.username != "dragbackup": |
|
return await CallbackQuery.answer("Tʜɪs ᴄᴏᴍᴍᴀɴᴅ ᴄᴀɴ ᴏɴʟʏ ʙᴇ ᴜsᴇᴅ ɪɴ ᴛʜᴇ @ᴅʀᴀɢʙᴀᴄᴋᴜᴘ ɢʀᴏᴜᴘ.", show_alert=True) |
|
|
|
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, |
|
) |
|
med = InputMediaPhoto(media=config.STATS_IMG_URL, caption=text) |
|
try: |
|
await CallbackQuery.edit_message_media(media=med, reply_markup=upl) |
|
except MessageIdInvalid: |
|
await CallbackQuery.message.reply_photo( |
|
photo=config.STATS_IMG_URL, caption=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 and CallbackQuery.from_user.id != OWNER_ID: |
|
|
|
if CallbackQuery.message.chat.username != "dragbackup": |
|
return await CallbackQuery.answer("Tʜɪs ᴄᴏᴍᴍᴀɴᴅ ᴄᴀɴ ᴏɴʟʏ ʙᴇ ᴜsᴇᴅ ɪɴ ᴛʜᴇ @ᴅʀᴀɢʙᴀᴄᴋᴜᴘ ɢʀᴏᴜᴘ.", 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"], |
|
) |
|
med = InputMediaPhoto(media=config.STATS_IMG_URL, caption=text) |
|
try: |
|
await CallbackQuery.edit_message_media(media=med, reply_markup=upl) |
|
except MessageIdInvalid: |
|
await CallbackQuery.message.reply_photo( |
|
photo=config.STATS_IMG_URL, caption=text, reply_markup=upl |
|
) |
|
|