Подключение роутеров отдельными модулями

У меня есть файл routers.py в котором я импортирую отдельные модули handlers, для каждого модуля есть свой именной роутер:

from functions.cmd_new_date import router_new_date
from functions.cmd_find_date import router_find_date

В нем же я создал список из импортируемых модулей и объявил функцию которая возвращает каждый элемент списка:

rl = [router_find_date, router_new_date]

def routers_list():
    for i in rl:
        return i

Далее я в файле run.py в главной функции подключаю роутер, пользуясь функцией routers_list:

async def main():
    dp.include_router(routers_list())
    await dp.start_polling(bot)

Но она подключает только первый (то есть нулевой по индексу) роутер из списка. Как подключить список с роутерами без использования dp.include_router() для каждого роутера? Или какие есть еще варианты разбить handlers на модули (один handler - один модуль) и подключать их напрямую в главную функцию без повторения кода?


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

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

Удалось решить таким образом:

Создаем список с роутерами и немного меняем подключение роутеров внутри функции main:

async def main():
    for i in rl: #rl - routers list
        dp.include_router(i)
        
    await dp.start_polling(bot)
→ Ссылка