Как сделать отмену выполнения FSM aiogram

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

В боте есть много функций, которые являются состояниями. Как сделать отмену выполнения состояний? Я понимаю, что можно просто в каждой функции написать что-то вроде:

if message.text == '/cancel':
    await message.answer('действие отменено')
    await state.finish()
    return 

но нельзя ли создать какую-то универсальную функцию, которая бы при команде /cancel делала state.finish()?

Заранее спасибо за помощь и извиняюсь если плохо объяснил, задавайте любые вопросы, всё уточню

Ответы

▲ 1Принят

Можете добавить такой хэндлер:

@dp.message_handler(state='*', commands='cancel')
async def cancel_handler(message: types.Message, state: FSMContext):
    await message.answer('Действие отменено')
    await state.finish()