Files
limoka/coddrago/modules/speedtest.py
2025-07-10 21:02:34 +03:00

74 lines
3.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ---------------------------------------------------------------------------------
#░█▀▄░▄▀▀▄░█▀▄░█▀▀▄░█▀▀▄░█▀▀▀░▄▀▀▄░░░█▀▄▀█
#░█░░░█░░█░█░█░█▄▄▀░█▄▄█░█░▀▄░█░░█░░░█░▀░█
#░▀▀▀░░▀▀░░▀▀░░▀░▀▀░▀░░▀░▀▀▀▀░░▀▀░░░░▀░░▒▀
# Name: Speedtest
# Description: Module to run speedtest using speedtest library
# Author: @codrago_m
# ---------------------------------------------------------------------------------
# 🔒 Licensed under the GNU AGPLv3
# 🌐 https://www.gnu.org/licenses/agpl-3.0.html
# ---------------------------------------------------------------------------------
# Author: @codrago
# Commands: speedtest
# scope: hikka_only
# meta developer: @codrago_m
# requires: speedtest-cli
# meta banner: https://raw.githubusercontent.com/coddrago/modules/refs/heads/main/banner.png
# meta pic: https://envs.sh/HoD.webp
# ---------------------------------------------------------------------------------
import speedtest
from .. import loader, utils
@loader.tds
class SpeedTestMod(loader.Module):
"""Module to run speedtest using speedtest library"""
strings = {
"name": "SpeedTest",
"running": "<emoji document_id=5870718740236079262>🌐</emoji> <b>Running speedtest...</b>",
"results": "<emoji document_id=5870718740236079262>🌐</emoji> <b>Speedtest Results:</b>\n\n"
"<emoji document_id=5870718740236079262>🌐</emoji> <b>Download:</b> <code>{download} Mbps</code>\n"
"<emoji document_id=5870729082517328189>📊</emoji> <b>Upload:</b> <code>{upload} Mbps</code>\n"
"<emoji document_id=5222108309795908493>✨</emoji> <b>Ping:</b> {ping} ms",
"error": "🚫 <b>Error running speedtest:</b> <code>{error}</code>",
}
strings_ru = {
"running": "<emoji document_id=5870718740236079262>🌐</emoji> <b>Запуск теста скорости...</b>",
"results": "<emoji document_id=5870718740236079262>🌐</emoji> <b>Результаты теста скорости:</b>\n\n"
"<emoji document_id=5870718740236079262>🌐</emoji> <b>Скачивание:</b> <code>{download} Мбит/с</code>\n"
"<emoji document_id=5870729082517328189>📊</emoji> <b>Загрузка:</b> <code>{upload} Мбит/с</code>\n"
"<emoji document_id=5222108309795908493>✨</emoji> Пинг: {ping} мс",
"error": "🚫 <b>Ошибка при запуске теста скорости:</b> <code>{error}</code>",
}
async def client_ready(self, client, db):
self.client = client
async def speedtestcmd(self, message):
"""Speedtest of your server internet"""
await utils.answer(message, self.strings("running"))
try:
st = speedtest.Speedtest()
st.download()
st.upload()
results = st.results.dict()
download = results["download"] / 1_000_000 # Convert to Mbps
upload = results["upload"] / 1_000_000 # Convert to Mbps
ping = results["ping"]
await utils.answer(
message,
self.strings("results").format(
ping=round(ping, 2),
download=round(download, 2),
upload=round(upload, 2)
)
)
except Exception as e:
await utils.answer(message, self.strings("error").format(error=str(e)))