|
7 | 7 | Information Superhighway (yes, Internet). """ |
8 | 8 |
|
9 | 9 | from datetime import datetime |
10 | | - |
11 | | -from speedtest import Speedtest |
| 10 | +import io |
| 11 | +import speedtest |
12 | 12 | from telethon import functions |
13 | | -from userbot import CMD_HELP |
| 13 | +from userbot import CMD_HELP, bot |
14 | 14 | from userbot.events import register |
15 | 15 |
|
16 | 16 |
|
17 | 17 | @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: {} |
28 | 73 |
|
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))) |
41 | 76 |
|
42 | 77 |
|
43 | | -def speed_convert(size): |
44 | | - """ |
45 | | - Hi human, you can't read bytes? |
46 | | - """ |
| 78 | +def convert_from_bytes(size): |
47 | 79 | 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 | + } |
50 | 88 | while size > power: |
51 | 89 | size /= power |
52 | | - zero += 1 |
53 | | - return f"{round(size, 2)} {units[zero]}" |
| 90 | + n += 1 |
| 91 | + return f"{round(size, 2)} {units[n]}" |
54 | 92 |
|
55 | 93 |
|
56 | 94 | @register(outgoing=True, pattern="^.dc$") |
|
0 commit comments