Lihan3301
@Lihan3301

Как интегрировать FastAPI с aiogram для работы с вебхуками?

Сделал скрипт на FastAPI для обработки вебхуков от платежной системы. Теперь мне нужно интегрировать его с ботом на aiogram 3.x.x. Как правильно запустить обработчик вебхуков, чтобы он работал вместе с ботом?

Файл для запуска бота:

import asyncio
from utils import router
from loader import bot, dp
from utils.middlewares import ThrottlingMiddleware


async def startup():
    print("Bot started!")


async def main():
    dp.include_router(router.user)
    dp.message.middleware(ThrottlingMiddleware())

    await startup()
    await bot.delete_webhook(drop_pending_updates=True)
    await dp.start_polling(bot)

if __name__ == "__main__":
    asyncio.run(main())
  • Вопрос задан
  • 99 просмотров
Пригласить эксперта
Ответы на вопрос 1
@twistfire92
Python backend developer
У себя делал примерно следующим образом:

WEBHOOK_PATH = f"/bot/{settings.token}"
WEBHOOK_URL = settings.webhook_url + WEBHOOK_PATH

app = FastAPI()

@app.on_event("startup")
async def on_startup():
    webhook_info = await bot.get_webhook_info()
    if webhook_info != WEBHOOK_URL:
        await bot.set_webhook(url=WEBHOOK_URL)
    logger.info("Bot started")

@app.post(WEBHOOK_PATH)
async def bot_webhook(update: dict):
    telegram_update = types.Update(**update)
    await dp.feed_update(bot=bot, update=telegram_update)

@app.on_event("shutdown")
async def on_shutdown():
    await bot.session.close()
    await bot.delete_webhook()
    logger.info("Bot stopped")
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы