diff --git a/examples/webhook/low_level.py b/examples/webhook/low_level.py new file mode 100644 index 0000000..2bb2f68 --- /dev/null +++ b/examples/webhook/low_level.py @@ -0,0 +1,55 @@ +import asyncio +import logging + +from fastapi import Request +from fastapi.responses import JSONResponse + +from maxapi import Bot, Dispatcher +from maxapi.methods.types.getted_updates import process_update_webhook +from maxapi.types import MessageCreated +from maxapi.dispatcher import webhook_app + +logging.basicConfig(level=logging.INFO) + +bot = Bot('тут_ваш_токен') +dp = Dispatcher() + + +@dp.message_created() +async def handle_message(event: MessageCreated): + await event.message.answer('Бот работает через вебхук!') + +# Регистрация обработчика +# для вебхука +@webhook_app.post('/') +async def _(request: Request): + + # Сериализация полученного запроса + event_json = await request.json() + + # Десериализация полученного запроса + # в pydantic + event_object = await process_update_webhook( + event_json=event_json, + bot=bot + ) + + # ...свой код + print(f'Информация из вебхука: {event_json}') + # ...свой код + + # Окончательная обработка запроса + await dp.handle(event_object) + + # Ответ вебхука + return JSONResponse(content={'ok': True}, status_code=200) + + +async def main(): + + # Запуск сервера + await dp.init_serve(bot, log_level='critical') + + +if __name__ == '__main__': + asyncio.run(main())