from speedtest import Speedtest from bot.helper.telegram_helper.filters import CustomFilters from bot import dispatcher from bot.helper.telegram_helper.bot_commands import BotCommands from bot.helper.telegram_helper.message_utils import sendMessage, editMessage from telegram.ext import CommandHandler def speedtest(update, context): speed = sendMessage("Running Speed Test . . . ", context.bot, update) test = Speedtest() test.get_best_server() test.download() test.upload() test.results.share() result = test.results.dict() string_speed = f''' Server Name: {result['server']['name']} Country: {result['server']['country']}, {result['server']['cc']} Sponsor: {result['server']['sponsor']} ISP: {result['client']['isp']} SpeedTest Results Upload: {speed_convert(result['upload'] / 8)} Download: {speed_convert(result['download'] / 8)} Ping: {result['ping']} ms ISP Rating: {result['client']['isprating']} ''' editMessage(string_speed, speed) def speed_convert(size): """Hi human, you can't read bytes?""" power = 2 ** 10 zero = 0 units = {0: "", 1: "Kb/s", 2: "MB/s", 3: "Gb/s", 4: "Tb/s"} while size > power: size /= power zero += 1 return f"{round(size, 2)} {units[zero]}" SPEED_HANDLER = CommandHandler(BotCommands.SpeedCommand, speedtest, filters=CustomFilters.owner_filter | CustomFilters.authorized_user, run_async=True) dispatcher.add_handler(SPEED_HANDLER)