diff --git a/daemons/mailbox.py b/daemons/mailbox.py index d3a041c..95ae3f8 100644 --- a/daemons/mailbox.py +++ b/daemons/mailbox.py @@ -1,3 +1,5 @@ +import pydantic + from telebot import apihelper from daemons import base @@ -5,6 +7,14 @@ from utils import platform from utils import queues +class Message(pydantic.BaseModel): + project: str + name: str + type: str + body: dict + method: str = 'send_message' + + class Daemon(base.Daemon, queues.TasksHandlerMixin): def execute(self): self.poll() @@ -13,18 +23,19 @@ class Daemon(base.Daemon, queues.TasksHandlerMixin): def queue_name(self): return 'botalka_mailbox' - def process(self, payload): - bot = platform.platform_client.get_config('bots')[payload['project']][payload['name']] + def process(self, payload: dict): + message = Message.model_validate(payload) + bot = platform.platform_client.get_config('bots')[message.project][message.name] if not bot['mailbox_enabled']: return if bot['type'] == 'telegram': token = bot['secrets']['telegram_token'] - self.process_telegram(token, payload['body']) + self.process_telegram(token, message.method, message.body) else: print('Unknown bot type:', bot['type']) - def process_telegram(self, token, payload): + def process_telegram(self, token, method, payload): try: - apihelper.send_message(token, **payload) + getattr(apihelper, method)(token, **payload) except Exception as exc: print('Error', str(exc)) diff --git a/requirements.txt b/requirements.txt index b20b21f..d216c75 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,10 @@ +annotated-types==0.7.0 certifi==2024.8.30 charset-normalizer==3.4.0 idna==3.10 +pydantic==2.10.2 +pydantic_core==2.27.1 pyTelegramBotAPI==4.1.1 requests==2.32.3 +typing_extensions==4.12.2 urllib3==2.2.3