__version__ = (2, 0, 0) # █ █ ▀ █▄▀ ▄▀█ █▀█ ▀ # █▀█ █ █ █ █▀█ █▀▄ █ # © Copyright 2022 # https://t.me/hikariatama # # 🔒 Licensed under the GNU AGPLv3 # 🌐 https://www.gnu.org/licenses/agpl-3.0.html # meta pic: https://static.dan.tatar/serverinfo_icon.png # meta banner: https://mods.hikariatama.ru/badges/serverinfo.jpg # meta developer: @hikarimods # requires: psutil # scope: hikka_only # scope: hikka_min 1.2.10 import contextlib import os import platform import sys import psutil from telethon.tl.types import Message from .. import loader, utils def bytes_to_megabytes(b: int) -> int: return round(b / 1024 / 1024, 1) @loader.tds class serverInfoMod(loader.Module): """Show server info""" strings = { "name": "ServerInfo", "loading": ( "🚘 Loading server" " info..." ), "servinfo": ( "🚘 Server" " Info:\n\n💻 CPU:" " {cpu} Cores {cpu_load}%\n💻 RAM: {ram} /" " {ram_load_mb}MB" " ({ram_load}%)\n\n💻" " Kernel: {kernel}\n{arch_emoji} Arch: {arch}\n💻 OS: {os}\n\n💻 Python: {python}" ), } strings_ru = { "loading": ( "🚘 Загрузка информации о" " сервере..." ), "servinfo": ( "🚘 Информация о сервере" ":\n\n💻 CPU:" " {cpu} ядер(-ро) {cpu_load}%\n💻 RAM: {ram} /" " {ram_load_mb}MB" " ({ram_load}%)\n\n💻" " Kernel: {kernel}\n{arch_emoji} Arch: {arch}\n💻 OS: {os}\n\n💻 Python: {python}" ), "_cls_doc": "Показывает информацию о сервере", } @loader.command(ru_doc="Показать информацию о сервере") async def serverinfo(self, message: Message): """Show server info""" message = await utils.answer(message, self.strings("loading")) inf = { "cpu": "n/a", "cpu_load": "n/a", "ram": "n/a", "ram_load_mb": "n/a", "ram_load": "n/a", "kernel": "n/a", "arch_emoji": "n/a", "arch": "n/a", "os": "n/a", } with contextlib.suppress(Exception): inf["cpu"] = psutil.cpu_count(logical=True) with contextlib.suppress(Exception): inf["cpu_load"] = psutil.cpu_percent() with contextlib.suppress(Exception): inf["ram"] = bytes_to_megabytes( psutil.virtual_memory().total - psutil.virtual_memory().available ) with contextlib.suppress(Exception): inf["ram_load_mb"] = bytes_to_megabytes(psutil.virtual_memory().total) with contextlib.suppress(Exception): inf["ram_load"] = psutil.virtual_memory().percent with contextlib.suppress(Exception): inf["kernel"] = utils.escape_html(platform.release()) with contextlib.suppress(Exception): inf["arch"] = utils.escape_html(platform.architecture()[0]) inf["arch_emoji"] = ( "💻" if "64" in (inf.get("arch", "") or "") else "💻" ) with contextlib.suppress(Exception): system = os.popen("cat /etc/*release").read() b = system.find('DISTRIB_DESCRIPTION="') + 21 system = system[b : system.find('"', b)] inf["os"] = utils.escape_html(system) with contextlib.suppress(Exception): inf["python"] = ( f"{sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro}" ) await utils.answer(message, self.strings("servinfo").format(**inf))