Вынесение экземпляра 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, так как это будет отличным решением.