""" * @author yasir * @date 2022-12-01 09:12:27 * @projectName MissKatyPyro * Copyright @YasirPedia All rights reserved """ import platform import time from asyncio import Lock from re import MULTILINE, findall from subprocess import run as srun from pyrogram import Client from pyrogram import __version__ as pyrover from pyrogram import filters from pyrogram.types import Message from misskaty import app, botStartTime, misskaty_version from misskaty.core.decorator.ratelimiter import ratelimiter from misskaty.helper.human_read import get_readable_time from misskaty.vars import COMMAND_HANDLER @app.on_message(filters.command(["ping"], COMMAND_HANDLER)) @ratelimiter async def ping(self: Client, ctx: Message): currentTime = get_readable_time(time.time() - botStartTime) start_t = time.time() rm = await ctx.reply_msg("🐱 Pong!!...") end_t = time.time() time_taken_s = round(end_t - start_t, 3) await rm.edit_msg( f"🐈 MissKatyBot {misskaty_version} based Pyrogram {pyrover} Online.\n\nPing: {time_taken_s} detik\nUptime: {currentTime}\nPython Version: {platform.python_version()}" ) @app.on_message(filters.command(["ping_dc"], COMMAND_HANDLER)) @ratelimiter async def ping_handler(self: Client, ctx: Message): m = await ctx.reply_msg("Pinging datacenters...") async with Lock(): ips = { "dc1": "149.154.175.53", "dc2": "149.154.167.51", "dc3": "149.154.175.100", "dc4": "149.154.167.91", "dc5": "91.108.56.130", } text = "**Pings:**\n" for dc, ip in ips.items(): try: shell = srun( ["ping", "-c", "1", "-W", "2", ip], text=True, check=True, capture_output=True, ) resp_time = findall(r"time=.+m?s", shell.stdout, MULTILINE)[0].replace( "time=", "" ) text += f" **{dc.upper()}:** {resp_time} ✅\n" except Exception: # There's a cross emoji here, but it's invisible. text += f" **{dc.upper}:** ❌\n" await m.edit_msg(text)