Не работает функции aiogram

Не пойму в чем причина... если функция commands_messages стоит сверху то не работает вторая функция command_weather, а если поменять их местами то работают обе... в чем причина?

@dp.message_handler()
async def commands_messages(message: types.Message):
    if message.text == "Погода":
       await message.answer(weather.get_weather())

@dp.message_handler(commands='weather')
async def command_weather(message: types.Message):
    await message.answer(weather.get_weather())

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

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

Штош. Так как способ фикса вы уже знаете, я расскажу вам один секрет.
Вместо того чтобы делать пустой хендлер, который реально нужен очень редко, ставьте фильтры на входящие данные.
Пример

@dp.message_handler(text="Погода")
async def weather_msg(message: types.Message):
   await message.answer(weather.get_weather())

И бесполезный блок ифа убрали и выглядит поприличнее. Но можно сделать вообще красоту. Вместо двух ваших хендлеров делаете вот так.

@dp.message_handler(commands=['weather'])
@dp.message_handler(text="Погода")
async def commands_messages(message: types.Message):
    await message.answer(weather.get_weather())

Он будет реагировать как на команду так и на текст

→ Ссылка