diff options
Diffstat (limited to 'lib/__init__.py')
-rw-r--r-- | lib/__init__.py | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/lib/__init__.py b/lib/__init__.py new file mode 100644 index 0000000..2c67b83 --- /dev/null +++ b/lib/__init__.py @@ -0,0 +1,58 @@ +from typing import List + +import pyrogram +from pyrogram.api import types as tgtypes + + +def property_decorator(key): + def decorator(value): + def wrapper(func): + setattr(func, key, value) + return func + + return wrapper + + return decorator + + +name = property_decorator('name') +description = property_decorator('description') + + +def is_command(func): + return hasattr(func, 'name') and func.name is not None + + +def get_command_name(func): + return func.name + + +def get_command_description(func): + return func.description + + +commands = {} + + +def get_all_commands(): + return commands.values() + + +class CommandContext(object): + def __init__(self, client: pyrogram.Client, channel, args: List[str], message: tgtypes.Message): + import re + self.args = args + self.client = client + self.channel = channel + self.message = message + self.rest_content = re.sub('.*? ', '', message.message) + self.author = message.from_id + + def respond(self, text): + self.client.send_message(self.channel, text=text) + + +def register_command(func): + if not is_command(func): + return + commands[get_command_name(func)] = func |