From 1a93979be4fcc95f16294b2fcfeac542a56496a3 Mon Sep 17 00:00:00 2001 From: Egor Date: Wed, 30 Sep 2020 19:31:05 +0300 Subject: [PATCH] feat: an example of intergration between externally created Application and dispatcher --- examples/separate_api_route_example.py | 38 ++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 examples/separate_api_route_example.py diff --git a/examples/separate_api_route_example.py b/examples/separate_api_route_example.py new file mode 100644 index 00000000..22632356 --- /dev/null +++ b/examples/separate_api_route_example.py @@ -0,0 +1,38 @@ +# NOTE: This is an example of an integration between +# externally created Application object and the aiogram's dispatcher +# This can be used for a custom route, for instance + +import logging +import ssl +import asyncio +import requests +from aiogram import Bot, Dispatcher, types +from aiogram.dispatcher.webhook import configure_app +from aiogram.utils.exceptions import BotBlocked + + +bot = Bot(token=config.bot_token) +dp = Dispatcher(bot) + + + +@dp.message_handler(commands=["start"]) +async def cmd_start(message: types.Message): + await message.reply("start!") + + +# handle /api route +async def api_handler(request): + return web.json_response({"status": "OK"}, status=200) + + +app = web.Application() +# add a custom route +app.add_routes([web.post('/api', api_handler)]) +# every request to /bot route will be retransmitted to dispatcher to handle +# as a bot update +configure_app(dp, app, "/bot") + + +if __name__ == '__main__': + web.run_app(app, port=9000) \ No newline at end of file