Как передать экземпляр класса в роутер 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?