2
0
mirror of https://github.com/Nick80835/microbot synced 2025-08-23 10:38:51 +00:00
microbot/ubot/fixes/utils.py

65 lines
2.2 KiB
Python
Raw Normal View History

2023-10-16 20:34:19 -04:00
from datetime import timedelta
2023-10-16 22:11:52 -04:00
from telethon.tl.types import Channel, Chat, MessageEntityMentionName
2023-10-16 18:13:41 -04:00
async def get_user(event, allow_channel=False):
2023-10-21 20:35:06 -04:00
if mention_entities := [i for i in event.entities if isinstance(i, MessageEntityMentionName)] if event.entities else False:
2023-10-16 22:11:52 -04:00
if len(mention_entities) > 1:
await event.reply("You provided too many arguments!")
return
try:
user = await event.client.get_input_entity(mention_entities[0].user_id)
if isinstance(user, Chat) or (isinstance(user, Channel) and not allow_channel):
raise TypeError
return user
except (ValueError, TypeError):
await event.reply("There was an error getting the user's ID!")
elif event.args:
2023-10-16 18:13:41 -04:00
if event.args.isnumeric():
user_id = int(event.args)
else:
user_id = None
try:
2023-10-16 22:11:52 -04:00
user = await event.client.get_input_entity(user_id or event.args)
2023-10-16 18:13:41 -04:00
if isinstance(user, Chat) or (isinstance(user, Channel) and not allow_channel):
raise TypeError
return user
except (ValueError, TypeError):
await event.reply("The ID or username you provided was invalid!")
elif event.is_reply:
reply = await event.get_reply_message()
if reply and reply.sender_id:
try:
2023-10-16 22:11:52 -04:00
user = await event.client.get_input_entity(reply.sender_id)
2023-10-16 18:13:41 -04:00
if isinstance(user, Chat) or (isinstance(user, Channel) and not allow_channel):
raise TypeError
return user
except (ValueError, TypeError):
await event.reply("There was an error getting the user's ID!")
return
else:
await event.reply("Give me a user ID, username or reply!")
return
else:
await event.reply("Give me a user ID, username or reply!")
2023-10-16 20:34:19 -04:00
def parse_time(time_num: int, unit: str) -> timedelta:
match unit:
case "m":
return timedelta(seconds=time_num * 60)
case "h":
return timedelta(seconds=time_num * 60 * 60)
case "d":
return timedelta(seconds=time_num * 24 * 60 * 60)