Не работает стоп машины состояний state finish aiogram

Рейтинг: 0Ответов: 1Опубликовано: 14.02.2023

Есть бот написаный на аиограм питон, есть машина состояний которая формирует заказ, и я сделал функцию для завершения стейта на любой стадии, но она почему то не работает, смотрел у других блогеров но не получается у меня почему то

@dp.message_handler(commands=["отмена"], state="*")
@dp.message_handler(Text(equals="отмена", ignore_case=True), state="*")
async def cancel_fsm(message: types.Message, state: FSMContext):
    await state.finish()

Ответы

▲ 0

Попробуйте таким способом, так всё работает:

@dp.message_handler(state='*', commands='cancel')
async def cancel_handler(message: types.Message, state: FSMContext):
    current_state = await state.get_state()
    if current_state is None:
        return
    await state.finish()

Чтобы всё работало коректно, вставляйте этот фрагмент кода в файл со всема основными командами, по типу: /start

Так же можете попробовать переместить ваш пример кода в тот файлик с командами, если он у вас где-то в другом месте проекта