Проблемы с командами в aiogram 3 | Команды через разные файлы

Буду краток. Возникла проблема, когда я создаю свой простой проект и появляется надобность в нескольких файлах в проекте. Например 1 файл отвечает на /start а 2 файл за /help Так вот создал такую систему и ничего не работает.

main.py

from dotenv import load_dotenv
import os
load_dotenv()


import asyncio
from aiogram import Bot, Dispatcher

from handlers.start import router
from handlers.base_commands import router as bs_router


BOT_TOKEN = os.getenv('TELEGRAM_TOKEN')

# Инициализация бота
#* Initial Bot
bot = Bot(
    token=BOT_TOKEN,
)
dp = Dispatcher()


# Запуск бота
async def main():
    dp.include_routers(router,bs_router)
    await dp.start_polling(bot)

if __name__ == "__main__":
    try:
        asyncio.run(main())
    except KeyboardInterrupt:
        print("\nБот остановлен")

handlers/start.py

from aiogram import F, Router
from aiogram.filters import CommandStart, Command
from aiogram.types import Message, CallbackQuery
router = Router()
@router.message(Command("start"))
async def start_handler(message: Message):
    await message.answer(
        "Добро пожаловать\n\n"
        "Доступные команды:\n"
        "/help - Помощь\n\n"
    )

handlers/base_commands.py

from aiogram import Router
from aiogram.filters import Command
from aiogram.types import Message

router = Router()

@router.message(Command("help"))
async def help_handler(message: Message):
    await message.answer(
        "Помощь по боту\n\n"
        "Основные команды:\n"
        "/start - Начало работы\n"
        "/help - Эта справка\n"
    )

Суть в том, что команды из start.py работают замечательно, но команды из base_commands.py отказываются работать, даже логги молчат.


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

Автор решения: Someone Sly

Ошибка в том, что вы импортируете два роутера с одинаковым именем, и второй импорт перезаписывает первый.

Переименуйте роутеры и дайте каждому уникальное имя:

В handlers/start.py - start_router
В handlers/base_commands.py -к примеру base_commands_router.

И в main.py:

from handlers.start import start_router
from handlers.base_commands import base_commands_router

В теле функции:

dp.include_routers(start_router, base_commands_router)
→ Ссылка