Дальнейшее принятие даты, введенной пользователем
Пишу код, в котором делаю проверку даты, записанной в словарь, которую ввел пользователь. С помощью блока try-except получилось сделать проверку, но при ValueError выводится просто текст "Неверный формат даты", а дальнейший ввод пользовательской "уже правильной" даты не обрабатывает. Как можно исправить?
@router.message(Vvod.data)
async def dostal_datu(message: Message, state: FSMContext):
await state.update_data(data1=message.text)
#Current_data - словарь с введенной датой
current_data = await state.get_data()
poluch = current_data['data1']
correctdate = None
await state.clear()
try:
poluch1 = DT.datetime.strptime(poluch, '%d-%m-%Y').isoweekday()
correctdate = 'Спасибо, дата введена успешно'
except ValueError:
correctdate = 'Не верный формат даты, необходимо ДД-ММ-ГГГГ'
await message.answer(str(correctdate))
Ответы (1 шт):
Автор решения: KEKACIK
→ Ссылка
Могу посоветовать, не очищать state при неправильной дате, то есть получится так: Ожидаем state=Vvod.data, далее проверяем через try/except валидность, если валидна - чистим state, если не валид, то пишем неверность формата и просим ввести ещё раз. После чего он опять будет ловиться в том же хендлере с тем же state