12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- from uuid import uuid4
- from enum import IntEnum
- from collections import namedtuple
- from telethon.utils import get_display_name
- Command = namedtuple(
- 'Command',
- 'name argc args args_string'
- )
- class Kind(IntEnum):
- CANNOT_APPLY_TO_SELF = 0
- CAN_APPLY_TO_SELF = 1
- NO_TARGET = 2
- def parse_command(text):
- text = text.strip()
- if not text.startswith('/'):
- raise ValueError
- text = text.split(' ')
- if len(text) < 1:
- raise ValueError
- command = text[0][1:].lower()
- if '@' in command:
- command = command.split('@')
- command = command[0]
- args = text[1:]
- argc = len(args)
- args_string = ' '.join(args)
- return Command(
- name=command,
- argc=argc,
- args=args,
- args_string=args_string
- )
- def get_link_to_user(user):
- full_name = get_display_name(user)
- if not full_name:
- full_name = user.username
-
- if not full_name:
- full_name = '?'
- if user.username:
- return f'[{full_name}](@{user.username})'
- return f'[{full_name}](tg://user?id={user.id})'
- def is_valid_name(name):
- return name.isidentifier()
- def make_temporary_filename(ext):
- uid = uuid4().hex
- return f'tmp_{uid}.{ext}'
- def parse_kind(kind):
- kind = int(kind)
- if kind < 0 or kind > 2:
- raise ValueError
- return kind
|