Срабатывает всегда только первое условие при выборе перехода в состояние
Кнопка назад по колбэку '/back' срабатывает и переходит в предыдущий хэндлер, но при вводе цены не уходит в следующий. Если же поменять условия местами, то наоборот будет работать переход в следующий хэндлер, а кнопка назад не будет работать. Сломал голову
@router_search.callback_query(StateFilter(AlSettings.metro), F.data == "district")
async def settings(callback: CallbackQuery, state: FSMContext):
await callback.message.delete()
await callback.message.answer('Укажите нижнюю границу цены:', reply_markup=keyboard_back)
if F.data == '/back':
await state.set_state(AlSettings.settings)
else:
await state.set_state(AlSettings.min_price)
Ответы (1 шт):
Автор решения: beee
→ Ссылка
Для опытных разработчиков ответ может оказаться очевидным, но это не так, если ты только пытаешься во всем разобраться. Ответ оказался таким: нужно использовать не ветвление, а фильтры. Т.е. декораторы обработчиков сообщений с заданными условиями и из определенного состояния машины состояний, ведь их можно прикрепить несколько к одному хэндлеру.