48 lines
1.5 KiB
Python
48 lines
1.5 KiB
Python
import speedtest
|
|
|
|
from bot.helper.telegram_helper.filters import CustomFilters
|
|
from bot import dispatcher, AUTHORIZED_CHATS
|
|
from bot.helper.telegram_helper.bot_commands import BotCommands
|
|
from telegram import Update, InlineKeyboardButton, InlineKeyboardMarkup, ParseMode
|
|
from telegram.ext import CallbackContext, Filters, run_async, CommandHandler
|
|
|
|
|
|
@run_async
|
|
def speedtst(update, context):
|
|
message = update.effective_message
|
|
ed_msg = message.reply_text("Running Speed Test . . . ")
|
|
test = speedtest.Speedtest()
|
|
test.get_best_server()
|
|
test.download()
|
|
test.upload()
|
|
test.results.share()
|
|
result = test.results.dict()
|
|
context.bot.editMessageText(
|
|
"Download Speed: "
|
|
f"{speed_convert(result['download'])}\n"
|
|
"Upload Speed: "
|
|
f"{speed_convert(result['upload'])}\n"
|
|
"Ping: "
|
|
f"{result['ping']}\n"
|
|
"ISP: "
|
|
f"{result['client']['isp']}",
|
|
update.effective_chat.id,
|
|
ed_msg.message_id,
|
|
)
|
|
|
|
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, speedtst,
|
|
filters=CustomFilters.authorized_chat | CustomFilters.authorized_user)
|
|
|
|
dispatcher.add_handler(SPEED_HANDLER)
|