mirror of
https://github.com/Nick80835/microbot
synced 2025-08-22 18:19:16 +00:00
65 lines
2.2 KiB
Python
65 lines
2.2 KiB
Python
from datetime import timedelta
|
|
|
|
from telethon.tl.types import Channel, Chat, MessageEntityMentionName
|
|
|
|
|
|
async def get_user(event, allow_channel=False):
|
|
if mention_entities := [i for i in event.get_entities_text() if isinstance(i, MessageEntityMentionName)]:
|
|
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:
|
|
if event.args.isnumeric():
|
|
user_id = int(event.args)
|
|
else:
|
|
user_id = None
|
|
|
|
try:
|
|
user = await event.client.get_input_entity(user_id or event.args)
|
|
|
|
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:
|
|
user = await event.client.get_input_entity(reply.sender_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!")
|
|
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!")
|
|
|
|
|
|
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)
|