Суть проблемы:
Я хочу проверить человек отправил числа или что-то другое
# Стаж вождения
@dp.message_handler(Text(equals=["Да ✅"]))
async def drive_exp(message: types.Message, state: FSMContext):
async with state.proxy() as data:
data['drlicense'] = message.text
await message.answer("Сколько лет стажа Вашего вождения? Укажите цифрами...", reply_markup=types.ReplyKeyboardRemove())
# Проверка на правильность написания стажа
@dp.message_handler(lambda message: not message.text.isdigit(), state = Qnnaire.driveexp)
async def drive_exp_invalid(message: types.Message):
return await message.reply("Сказал же написать цифрами, попробуйте еще раз ")
# Стаж написан правильно
# Опыт в такси
@dp.message_handler(lambda message: message.text.isdigit(), state = Qnnaire.driveexp)
async def taxi_exp(message: types.Message, state: FSMContext):
async with state.proxy() as data:
data['driveexp'] = message.text
keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)
buttons = ["Конечно", "Еще нет"]
keyboard.add(*buttons)
await message.answer(" У Вас есть опыт работы в такси?", reply_markup=keyboard)
Finite state machine example из доков aiogram не помог
если добавляю в самом начале await Qnnaire.citizen.set() и с каждой новой функцией await Qnnaire.next(), то функции не работают, только если бота перезапустить и то, пройдет одну функцию и останавливается.
Но даже так все-равно не работает фильтр
Python 3.10.4
aiogram 2.20 вроде)