python, telegram bot, aiogram

У меня есть telegram бот. В боте есть мини регистрация, которая реализована на машине состояний. Но есть нюанс после некоторых шагов регистрации машина состояний ждет фото, а иногда люди отвлекаются от регистрации и пытаются отправить команду, в ответ ничего, отправляют ещё раз опять ничего, люди думают, что бот завис, но бот все ещё ждёт фото. Как можно реализовать возможность обработки конкретных команд, например, /start во время ожидания фото.

    @dp.message_handler(content_types=['photo'], state=ProfilStatesGroup.photo)
async def id(message: types.Message, state: FSMContext):
    async with state.proxy() as data:
        data['photo'] = message.photo[0].file_id
    await message.answer('''Мой текст''', parse_mode='HTML')
    await bot.send_photo(id, photo=data['photo'], caption=f'''Мой текст''')
await state.finish()

В данном пример машина ждёт фото, и если отправить что-то другое бот будет молчать, как допустим не игнорировать команду /start и несколько других команд бота в таком случае, а обработать и ответить на них?


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

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

Как вариант можете попробовать добавить отмену состояний в свою команду /start:

@dp.message_handler(state='*', commands='start')
async def cancel_handler(message: types.Message, state: FSMContext):
    await state.finish()
    ...  # тут ваш остальной код для команды start

таким образом /start должен срабатывать даже если бот находится в каком то из состояний и ждет ответа от пользователя

→ Ссылка