Skip to content
This repository was archived by the owner on Sep 29, 2021. It is now read-only.

Commit eaeafe1

Browse files
committed
Test from BotHub
1 parent 66b3202 commit eaeafe1

File tree

1 file changed

+71
-33
lines changed

1 file changed

+71
-33
lines changed

userbot/modules/www.py

Lines changed: 71 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -7,50 +7,88 @@
77
Information Superhighway (yes, Internet). """
88

99
from datetime import datetime
10-
11-
from speedtest import Speedtest
10+
import io
11+
import speedtest
1212
from telethon import functions
13-
from userbot import CMD_HELP
13+
from userbot import CMD_HELP, bot
1414
from userbot.events import register
1515

1616

1717
@register(outgoing=True, pattern="^.speed$")
18-
async def speedtst(spd):
19-
""" For .speed command, use SpeedTest to check server speeds. """
20-
await spd.edit("`Running speed test . . .`")
21-
test = Speedtest()
22-
23-
test.get_best_server()
24-
test.download()
25-
test.upload()
26-
test.results.share()
27-
result = test.results.dict()
18+
async def _(event):
19+
if event.fwd_from:
20+
return
21+
input_str = event.pattern_match.group(1)
22+
as_text = False
23+
as_document = True
24+
if input_str == "image":
25+
as_document = False
26+
elif input_str == "file":
27+
as_document = True
28+
elif input_str == "text":
29+
as_text = True
30+
await event.edit("Calculating my internet speed. Please wait!")
31+
start = datetime.now()
32+
s = speedtest.Speedtest()
33+
s.get_best_server()
34+
s.download()
35+
s.upload()
36+
end = datetime.now()
37+
ms = (end - start).microseconds / 1000
38+
response = s.results.dict()
39+
download_speed = response.get("download")
40+
upload_speed = response.get("upload")
41+
ping_time = response.get("ping")
42+
client_infos = response.get("client")
43+
i_s_p = client_infos.get("isp")
44+
i_s_p_rating = client_infos.get("isprating")
45+
reply_msg_id = event.message.id
46+
if event.reply_to_msg_id:
47+
reply_msg_id = event.reply_to_msg_id
48+
try:
49+
response = s.results.share()
50+
speedtest_image = response
51+
if as_text:
52+
await event.edit("""**SpeedTest** completed in {} seconds
53+
Download: {}
54+
Upload: {}
55+
Ping: {}
56+
Internet Service Provider: {}
57+
ISP Rating: {}""".format(ms, convert_from_bytes(download_speed), convert_from_bytes(upload_speed), ping_time, i_s_p, i_s_p_rating))
58+
else:
59+
await bot.send_file(
60+
event.chat_id,
61+
speedtest_image,
62+
caption="**SpeedTest** completed in {} seconds".format(ms),
63+
force_document=as_document,
64+
reply_to=reply_msg_id,
65+
allow_cache=False
66+
)
67+
await event.delete()
68+
except Exception as exc:
69+
await event.edit("""**SpeedTest** completed in {} seconds
70+
Download: {}
71+
Upload: {}
72+
Ping: {}
2873
29-
await spd.edit("`"
30-
"Started at "
31-
f"{result['timestamp']} \n\n"
32-
"Download "
33-
f"{speed_convert(result['download'])} \n"
34-
"Upload "
35-
f"{speed_convert(result['upload'])} \n"
36-
"Ping "
37-
f"{result['ping']} \n"
38-
"ISP "
39-
f"{result['client']['isp']}"
40-
"`")
74+
__With the Following ERRORs__
75+
{}""".format(ms, convert_from_bytes(download_speed), convert_from_bytes(upload_speed), ping_time, str(exc)))
4176

4277

43-
def speed_convert(size):
44-
"""
45-
Hi human, you can't read bytes?
46-
"""
78+
def convert_from_bytes(size):
4779
power = 2**10
48-
zero = 0
49-
units = {0: '', 1: 'Kb/s', 2: 'Mb/s', 3: 'Gb/s', 4: 'Tb/s'}
80+
n = 0
81+
units = {
82+
0: "",
83+
1: "kilobytes",
84+
2: "megabytes",
85+
3: "gigabytes",
86+
4: "terabytes"
87+
}
5088
while size > power:
5189
size /= power
52-
zero += 1
53-
return f"{round(size, 2)} {units[zero]}"
90+
n += 1
91+
return f"{round(size, 2)} {units[n]}"
5492

5593

5694
@register(outgoing=True, pattern="^.dc$")

0 commit comments

Comments
 (0)