Не получается прописать календарь для telegram бота через telegram_bot_calendar
Я уже полгода изучаю python, это мой первый бот как учебное задание. Хочу сделать календарь для выбора нужной даты через telegram_bot_calendar, но не могу понять, почему тянется ошибка:
TypeError: 'ReplyKeyboardMarkup' object is not callable
Смысл ошибки я понимаю, но пока не могу понять, откуда тянется клавиатура, т.к. вроде все параметры заданы как в документации https://github.com/artembakhanov/python-telegram-bot-calendar . Буду очень благодарен, если поясните, какой момент я упускаю, какую связь не вижу, спасибо!
Мой код (часть):
# Спрашиваем пользователя, необходимы ли фото отеля
def need_photo(message: Message) -> None:
if message.text.isdigit():
if MAX_RESULT_AMOUNT >= int(message.text):
bot.set_state(message.from_user.id, RequiredParams.result_amount, message.chat.id)
with bot.retrieve_data(message.from_user.id, message.chat.id) as data:
data['result_amount'] = message.text
else:
bot.send_message(message.chat.id, f'Максимально могу вывести {MAX_RESULT_AMOUNT} вариантов!')
choice = bot.send_message(message.chat.id, 'Вы хотите, чтобы я прислал фото отелей?',
reply_markup=need_photo_choice.need_photo())
bot.register_next_step_handler(choice, result)
else:
back = bot.send_message(message.chat.id, 'Нужно ввести число',
reply_markup=accept_button.say_ok())
bot.register_next_step_handler(back, res_amount)
# Выводим информацию, учитывая ответы пользователя
@bot.callback_query_handler(func=need_photo_choice.need_photo())
def result(message: Message) -> None:
bot.set_state(message.from_user.id, RequiredParams.need_photo, message.chat.id)
if message.text == 'Да ✅':
bot.send_message(message.chat.id, 'Отлично! Вот что мне удалось подобрать для вас!')
elif message.text == 'Нет ❌':
bot.send_message(message.chat.id, 'Значит, ограничимся ссылками! Вот что мне удалось подобрать для вас!')
with bot.retrieve_data(message.from_user.id, message.chat.id) as data:
data['need_photo'] = message.text
bot.send_message(message.chat.id, 'Последний штрих: укажите интересующие вас даты ?')
RequiredParams.min_date = date.today()
calendar, step = DetailedTelegramCalendar(locale='ru',
min_date=RequiredParams.min_date).build()
calendar_req = bot.send_message(message.chat.id,
f'Выберите {LSTEP_rus[step]}',
reply_markup=calendar)
bot.register_next_step_handler(calendar_req, cal)
@bot.callback_query_handler(func=DetailedTelegramCalendar.func())
def cal(c):
result, key, step = DetailedTelegramCalendar(locale='ru',
min_date=RequiredParams.min_date).process(c.data)
if not result and key:
bot.edit_message_text(f"Выберите {LSTEP_rus[step]}",
c.message.chat.id,
c.message.message_id,
reply_markup=key)
elif result:
bot.edit_message_text(f"Вы выбрали {result}",
c.message.chat.id,
c.message.message_id)
За любые советы и "тыки" также буду благодарен!