File size: 2,957 Bytes
bd72f54 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# <============================================== IMPORTS =========================================================>
import speedtest
from telegram import InlineKeyboardButton, InlineKeyboardMarkup, Update
from telegram.constants import ParseMode
from telegram.ext import CallbackQueryHandler, ContextTypes
from Mikobot import DEV_USERS, function
from Mikobot.plugins.disable import DisableAbleCommandHandler
from Mikobot.plugins.helper_funcs.chat_status import check_admin
# <=======================================================================================================>
# <================================================ FUNCTION =======================================================>
def convert(speed):
return round(int(speed) / 1048576, 2)
@check_admin(only_dev=True)
async def speedtestxyz(update: Update, context: ContextTypes.DEFAULT_TYPE):
buttons = [
[
InlineKeyboardButton("Image", callback_data="speedtest_image"),
InlineKeyboardButton("Text", callback_data="speedtest_text"),
],
]
await update.effective_message.reply_text(
"Select SpeedTest Mode",
reply_markup=InlineKeyboardMarkup(buttons),
)
async def speedtestxyz_callback(update: Update, context: ContextTypes.DEFAULT_TYPE):
query = update.callback_query
if query.from_user.id in DEV_USERS:
msg = await update.effective_message.edit_text("Running a speedtest....")
speed = speedtest.Speedtest()
speed.get_best_server()
speed.download()
speed.upload()
replymsg = "SpeedTest Results:"
if query.data == "speedtest_image":
speedtest_image = speed.results.share()
await update.effective_message.reply_photo(
photo=speedtest_image,
caption=replymsg,
)
await msg.delete()
elif query.data == "speedtest_text":
result = speed.results.dict()
replymsg += f"\nDownload: `{convert(result['download'])}Mb/s`\nUpload: `{convert(result['upload'])}Mb/s`\nPing: `{result['ping']}`"
await update.effective_message.edit_text(
replymsg, parse_mode=ParseMode.MARKDOWN
)
else:
await query.answer("You are required to join Black Bulls to use this command.")
# <================================================ HANDLER =======================================================>
SPEED_TEST_HANDLER = DisableAbleCommandHandler("speedtest", speedtestxyz, block=False)
SPEED_TEST_CALLBACKHANDLER = CallbackQueryHandler(
speedtestxyz_callback, pattern="speedtest_.*", block=False
)
function(SPEED_TEST_HANDLER)
function(SPEED_TEST_CALLBACKHANDLER)
__mod_name__ = "SpeedTest"
__command_list__ = ["speedtest"]
__handlers__ = [SPEED_TEST_HANDLER, SPEED_TEST_CALLBACKHANDLER]
# <================================================ END =======================================================>
|