2
0
mirror of https://github.com/Nick80835/microbot synced 2025-08-22 10:09:40 +00:00
microbot/ubot/modules/evaluation.py

209 lines
6.3 KiB
Python
Raw Normal View History

2023-10-16 09:46:31 -04:00
import io
2020-05-10 22:59:51 -04:00
from PIL import Image, ImageOps
2020-04-24 11:51:06 -04:00
from speedtest import Speedtest
2023-10-16 09:46:31 -04:00
2020-09-13 13:50:36 -04:00
from ubot import ldr
2023-10-16 09:46:31 -04:00
2020-06-19 12:04:38 -04:00
@ldr.add("speed", owner=True, hide_help=True)
2020-04-24 11:51:06 -04:00
async def iamspeed(event):
2020-06-06 11:04:14 -04:00
speed_message = await event.reply("Running speed test…")
2020-04-24 11:51:06 -04:00
test = Speedtest()
test.get_best_server()
test.download()
test.upload()
test.results.share()
result = test.results.dict()
await speed_message.edit(
2020-06-06 11:04:14 -04:00
f"**Started at:** {result['timestamp']}\n"
f"**Download:** {speed_convert(result['download'])}\n"
f"**Upload:** {speed_convert(result['upload'])}\n"
f"**Ping:** {result['ping']} milliseconds\n"
f"**ISP:** {result['client']['isp']}"
2020-04-24 11:51:06 -04:00
)
def speed_convert(size):
power = 2**10
zero = 0
units = {0: '', 1: 'Kilobits/s', 2: 'Megabits/s', 3: 'Gigabits/s', 4: 'Terabits/s'}
while size > power:
size /= power
zero += 1
return f"{round(size, 2)} {units[zero]}"
@ldr.add("chatid")
2023-10-16 09:46:31 -04:00
async def chatidgetter(event):
if event.is_reply:
reply = await event.get_reply_message()
if reply.forward and reply.forward.channel_id:
2020-06-06 11:04:14 -04:00
await event.reply(f"**Channel ID:** {reply.forward.channel_id}")
2023-10-16 09:46:31 -04:00
return
chat_id = reply.chat_id
else:
chat_id = event.chat_id
2020-06-06 11:04:14 -04:00
await event.reply(f"**Chat ID:** {chat_id}")
2023-10-16 09:46:31 -04:00
@ldr.add("userid")
2023-10-16 09:46:31 -04:00
async def useridgetter(event):
if event.is_reply:
reply = await event.get_reply_message()
2020-10-03 11:27:11 -04:00
user_id = reply.sender_id
2023-10-16 09:46:31 -04:00
else:
2020-10-03 11:27:11 -04:00
user_id = event.sender_id
2023-10-16 09:46:31 -04:00
2020-06-06 11:04:14 -04:00
await event.reply(f"**User ID:** {user_id}")
2023-10-16 09:46:31 -04:00
@ldr.add("profile")
2023-10-16 09:46:31 -04:00
async def userprofilegetter(event):
2020-05-02 16:40:26 -04:00
if event.args:
2023-10-16 09:46:31 -04:00
try:
2020-05-02 16:40:26 -04:00
user_entity = await event.client.get_entity(event.args)
2023-10-16 09:46:31 -04:00
except (ValueError, TypeError):
2020-06-06 11:04:14 -04:00
await event.reply("The ID or username you provided was invalid!")
2023-10-16 09:46:31 -04:00
return
elif event.is_reply:
reply = await event.get_reply_message()
2020-10-03 11:27:11 -04:00
reply_id = reply.sender_id
2023-10-16 09:46:31 -04:00
if reply_id:
try:
user_entity = await event.client.get_entity(reply_id)
except (ValueError, TypeError):
2020-06-06 11:04:14 -04:00
await event.reply("There was an error getting the user!")
2023-10-16 09:46:31 -04:00
return
else:
2020-06-06 11:04:14 -04:00
await event.reply("The user may have super sneaky privacy settings enabled!")
2023-10-16 09:46:31 -04:00
return
else:
2020-06-06 11:04:14 -04:00
await event.reply("Give me a user ID, username or reply!")
2023-10-16 09:46:31 -04:00
return
userid = user_entity.id
username = user_entity.username
userfullname = f"{user_entity.first_name} {user_entity.last_name or ''}"
await event.reply(f"**Full Name:** {userfullname}\n**Username:** @{username}\n**User ID:** {userid}")
2020-07-21 09:44:28 -04:00
@ldr.add("stickpng", help="Converts stickers to PNG files.")
2023-10-16 09:46:31 -04:00
async def stickertopng(event):
reply = await event.get_reply_message()
2020-05-11 10:18:47 -04:00
if reply and reply.sticker:
2023-10-16 09:46:31 -04:00
sticker_webp_data = reply.sticker
else:
2020-06-06 11:04:14 -04:00
await event.reply("Reply to a sticker to get it as a PNG file!")
2023-10-16 09:46:31 -04:00
return
sticker_webp_io = io.BytesIO()
await event.client.download_media(sticker_webp_data, sticker_webp_io)
sticker_webp = Image.open(sticker_webp_io)
sticker_png_io = io.BytesIO()
sticker_webp.save(sticker_png_io, "PNG")
sticker_png_io.name = "sticker.png"
sticker_png_io.seek(0)
await event.reply(file=sticker_png_io, force_document=True)
2020-05-10 22:59:51 -04:00
2020-07-21 09:44:28 -04:00
@ldr.add("stickflip", help="Flips stickers horizontally.")
2020-05-10 22:59:51 -04:00
async def flipsticker(event):
reply = await event.get_reply_message()
2020-05-11 10:18:47 -04:00
if reply and reply.sticker:
2020-05-10 22:59:51 -04:00
sticker_webp_data = reply.sticker
else:
2020-06-06 11:04:14 -04:00
await event.reply("Reply to a sticker to flip that bitch!")
2020-05-10 22:59:51 -04:00
return
sticker_webp_io = io.BytesIO()
await event.client.download_media(sticker_webp_data, sticker_webp_io)
sticker_webp = Image.open(sticker_webp_io)
sticker_webp = ImageOps.mirror(sticker_webp)
sticker_flipped_io = io.BytesIO()
sticker_webp.save(sticker_flipped_io, "WebP")
sticker_flipped_io.name = "sticker.webp"
sticker_flipped_io.seek(0)
await event.reply(file=sticker_flipped_io)
2020-05-11 10:47:09 -04:00
2020-07-21 09:44:28 -04:00
@ldr.add("stickimg", help="Converts images to sticker sized PNG files.")
2020-05-11 10:47:09 -04:00
async def createsticker(event):
if event.is_reply:
reply_message = await event.get_reply_message()
data = await ldr.get_image(reply_message)
if not data:
2020-06-06 11:04:14 -04:00
await event.reply("Reply to or caption an image to make it sticker-sized!")
2020-05-11 10:47:09 -04:00
return
else:
data = await ldr.get_image(event)
if not data:
2020-06-06 11:04:14 -04:00
await event.reply("Reply to or caption an image to make it sticker-sized!")
2020-05-11 10:47:09 -04:00
return
image_io = io.BytesIO()
await event.client.download_media(data, image_io)
sticker_png = Image.open(image_io)
sticker_png = sticker_png.crop(sticker_png.getbbox())
final_width = 512
final_height = 512
if sticker_png.width > sticker_png.height:
final_height = 512 * (sticker_png.height / sticker_png.width)
elif sticker_png.width < sticker_png.height:
final_width = 512 * (sticker_png.width / sticker_png.height)
sticker_png = ImageOps.fit(sticker_png, (int(final_width), int(final_height)))
sticker_new_io = io.BytesIO()
sticker_png.save(sticker_new_io, "PNG")
sticker_new_io.name = "sticker.png"
sticker_new_io.seek(0)
await event.reply(file=sticker_new_io, force_document=True)
@ldr.add("compress")
async def compressor(event):
reply = await event.get_reply_message()
try:
2020-06-04 15:12:02 -04:00
compression_quality = int(event.args)
2020-06-04 15:15:20 -04:00
if compression_quality < 0:
compression_quality = 0
2020-06-04 15:12:02 -04:00
elif compression_quality > 100:
compression_quality = 100
2020-05-11 10:47:09 -04:00
except ValueError:
2020-06-04 15:12:02 -04:00
compression_quality = 15
2020-05-11 10:47:09 -04:00
if reply and reply.sticker:
sticker_webp_data = reply.sticker
else:
2020-06-06 11:04:14 -04:00
await event.reply("Reply to a sticker to compress that bitch!")
2020-05-11 10:47:09 -04:00
return
sticker_io = io.BytesIO()
await event.client.download_media(sticker_webp_data, sticker_io)
2020-06-04 15:12:02 -04:00
sticker_image = Image.open(sticker_io)
sticker_image = sticker_image.convert("RGB")
sticker_io = io.BytesIO()
sticker_image.save(sticker_io, "JPEG", quality=compression_quality)
sticker_image = Image.open(sticker_io)
sticker_io = io.BytesIO()
sticker_image.save(sticker_io, "WebP", quality=99)
sticker_io.seek(0)
2020-05-11 10:47:09 -04:00
sticker_io.name = "sticker.webp"
2020-06-04 15:12:02 -04:00
await event.reply(file=sticker_io)