aboutsummaryrefslogtreecommitdiff
path: root/lib/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/__init__.py')
-rw-r--r--lib/__init__.py58
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