diff --git a/server/custom.py b/server/custom.py index fbd34a1..be5ca70 100644 --- a/server/custom.py +++ b/server/custom.py @@ -2,14 +2,18 @@ from aiogram import Bot as AioBot, Dispatcher from aiogram.dispatcher.webhook import WebhookRequestHandler from aiogram.dispatcher.webhook import SendMessage from aiogram import types +from contextvars import ContextVar +from aiohttp.web_exceptions import HTTPNotFound from olgram.models.models import Bot +db_bot_instance: ContextVar[Bot] = ContextVar('db_bot_instance') + async def message_handler(message, *args, **kwargs): if message.text and message.text.startswith("/start"): # На команду start нужно ответить, не пересылая сообщение никуда - bot = AioBot.get_current() - return SendMessage(chat_id=message.chat.id, text=f'Hi from webhook {args} {kwargs} {bot}') + return SendMessage(chat_id=message.chat.id, + text=db_bot_instance.get().start_text) class CustomRequestHandler(WebhookRequestHandler): @@ -18,14 +22,13 @@ class CustomRequestHandler(WebhookRequestHandler): self._dispatcher = None super(CustomRequestHandler, self).__init__(*args, **kwargs) - async def _create_dispatcher(self): key = self.request.url.path[1:] bot = await Bot.filter(code=key).first() if not bot: return None - + db_bot_instance.set(bot) dp = Dispatcher(AioBot(bot.token)) dp.register_message_handler(message_handler, content_types=[types.ContentType.TEXT, @@ -42,6 +45,9 @@ class CustomRequestHandler(WebhookRequestHandler): async def post(self): dispatcher = await self._create_dispatcher() + if not dispatcher: + raise HTTPNotFound() + Dispatcher.set_current(dispatcher) AioBot.set_current(dispatcher.bot) return await super(CustomRequestHandler, self).post()