Вынесение экземпляра Bot за рамки функции main

Нужна помощь с вынесением переменной Bot за рамки функции таким образом, чтобы я мог обращаться к ней в любом другом файле проекта.

Структура файла Main:

async def main():
    # await db.create_db()  # Создание базы данных
    (подключение пула...)
    try:
        bot = Bot(token=Config.TOKEN,default=DefaultBotProperties(parse_mode=ParseMode.HTML))

        dp = Dispatcher(storage=redis_storage)
        dp.message.middleware(ThrottlingMiddleware())
        from Form_Bot import rForm
        from Start_Menu import rCom
        dp.include_routers(
            rForm,
            rCom
        )
    finally:
        await close.pool()

if __name__ == '__main__':
    asyncio.run(main())

Много чего убрал из функции async def main для наглядности, однако смысл тот же.

Как в данном случае вынести bot за рамки данного файла, чтобы его можно было использовать где угодно?

Написать:

bot = Bot(token=Config.TOKEN, default=DefaultBotProperties(parse_mode=ParseMode.HTML))

в начале файла Main не вариант.


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

Автор решения: HELPATCH

Если вы хотите использовать более "чистую" архитектуру и иметь доступ к объекту бота из разных мест, то советую вам следовать принципам Dependency Injection (DI) используя dishka, так как это будет отличным решением.

→ Ссылка