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 шт):
Как вариант можете попробовать добавить отмену состояний в свою команду /start:
@dp.message_handler(state='*', commands='start')
async def cancel_handler(message: types.Message, state: FSMContext):
await state.finish()
... # тут ваш остальной код для команды start
таким образом /start должен срабатывать даже если бот находится в каком то из состояний и ждет ответа от пользователя