Как передать экземпляр класса в роутер FastAPI?

Мне нужно передать в мои роутеры экземпляр Дискорд бота, чтобы в дальнейшем использовать этого бота в обработке запроса. Например: отправляется запрос на эндпоинт api/process_order/, в теле запроса передается айди ордера и бот должен отправить в определенный канал, что ордер с таким айди был обработан.

У меня имеется файл api.py

import os
from nextcord.ext import commands
from fastapi import FastAPI, Depends
from api_server.endpoints import orders, steam_authorization


def start_api(bot: commands.Bot):
    app = FastAPI()

    async def get_bot():
        return bot

    app.include_router(orders.router)
    app.include_router(steam_authorization.router)

    app.secret_key = os.urandom(24)

    if __name__ == '__main__':
        import uvicorn

        uvicorn.run(app, port=5000)

Где я подключаю роутеры через функцию start_api. В этой функции должен передаваться аргумент bot.

В файле main.py и как раз вызываю функцию start_api, тем самым запускаю апи. В этой функции я передаю экземпляр бота.

import nextcord
from nextcord.ext import commands
from threading import Thread
from api import start_api

bot = commands.Bot(intents=nextcord.Intents.all())

Thread(target=start_api, args=(bot,)).start()
bot.run(TOKEN)

Теперь главный вопрос: Как мне передать в роутер, например orders.router, экземпляр этого бота, чтобы после использовать этого бота в самом роутере orders?


Ответы (0 шт):