@nickie000

Не могу проверить отправленное сообщение на тип введенных данных [aiogram]?

Суть проблемы:
Я хочу проверить человек отправил числа или что-то другое
#  Стаж вождения
@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 вроде)
  • Вопрос задан
  • 1182 просмотра
Решения вопроса 1
WhiteMarlin
@WhiteMarlin
Как вариант, для проверки можно использовать регулярное выражение.
if re.match(r"^[0-9]+$", message.text):
    # True
else:
    # False
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
InternetMaster
@InternetMaster
Интернет
Ну во-первых это часть кода, нету даже самого Qnnaire.
Нету, ошибки которая выдается (раз ты говоришь что не работает, только перезапустить)

Но даже так все-равно не работает фильтр

Какой фильтр?

Кстати убери лямбду в декораторе над функцией taxi_exp, это ненужное отнимание ресурсов вычислительной техники, ведь если введено не число, его отловит функция выше
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы