Как сделать проверку даты с полученного сообщения в telebot?
Пытаюсь сделать проверку даты из входящего сообщения в эталонном формате, но выдает ошибку, когда дата введена не верно.
import telebot
import config
from datetime import datetime
bot = telebot.TeleBot(config.TOKEN) # Токен бота из файла кофигурации
@bot.message_handler(commands=['start'])
def date_start(message):
bot.send_message(message.chat.id, 'Введите дату формата ДД-ММ-ГГГГ')
bot.register_next_step_handler(message, date_step_1)
def date_step_1(message):
res = bool(datetime.strptime(message.text, '%d-%m-%Y'))
if res == True:
bot.send_message(message.chat.id, 'Спасибо, дата введена')
elif res == False:
bot.send_message(message.chat.id, 'Не верный формат даты, необходимо ДД-ММ-ГГГГ')
bot.infinity_polling()
Ошибка
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/telebot/__init__.py", line 955, in infinity_polling
self.polling(non_stop=True, timeout=timeout, long_polling_timeout=long_polling_timeout,
File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/telebot/__init__.py", line 1043, in polling
self.__threaded_polling(non_stop=non_stop, interval=interval, timeout=timeout, long_polling_timeout=long_polling_timeout,
File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/telebot/__init__.py", line 1118, in __threaded_polling
raise e
File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/telebot/__init__.py", line 1074, in __threaded_polling
self.worker_pool.raise_exceptions()
File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/telebot/util.py", line 148, in raise_exceptions
raise self.exception_info
File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/telebot/util.py", line 91, in run
task(*args, **kwargs)
File "/Users/vladimir/Library/Mobile Documents/com~apple~CloudDocs/Documents/Хобби/Bot on python/date_ex.py", line 40, in date_step_1
res = bool(datetime.strptime(message.text, '%d-%m-%Y'))
File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/_strptime.py", line 568, in _strptime_datetime
tt, fraction, gmtoff_fraction = _strptime(data_string, format)
File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/_strptime.py", line 349, in _strptime
raise ValueError("time data %r does not match format %r" %
ValueError: time data 'Mmm' does not match format '%d-%m-%Y'
"
Источник: Stack Overflow на русском