телеграм бот лезет в неправильный elif

Рейтинг: 0Ответов: 0Опубликовано: 26.08.2023

У бота есть хендлер на команду "secret", откуда пользователь может нажать на две кнопки

@bot.message_handler(commands=['secret'])
def enter_days(message):
    markup = types.InlineKeyboardMarkup(row_width=2)  # две кнопки в ряду

    btn1 = types.InlineKeyboardButton(f'{FreeDayList[0]}', callback_data="1day")
    btn2 = types.InlineKeyboardButton(f'{FreeDayList[1]}', callback_data="2day")
    markup.add(btn1, btn2)
    bot.send_message(message.chat.id, 'Какой день редактируем?', reply_markup=markup)

Так же у бота есть callback хэндлер что бы обрабатывать эти кнопки:

@bot.callback_query_handler(func=lambda call: True)
def callback(call):
      if call.data == '1day':
        bot.send_message(call.message.chat.id, f'Напиши время в формате xx:xx ')
        FreeDays.append(FreeDayList[0])

        @bot.message_handler(content_types=['text'])
        def get_messages(message):
            msg = message.text  # сообщение пользователя
            bot.send_message(call.message.chat.id, f'первый текст Добавлено время {msg} на дату {FreeDayList[0]}')


      elif call.data == '2day':
        bot.send_message(call.message.chat.id, f'Напиши время в формате xx:xx  ')
        FreeDays.append(FreeDayList[1])

        @bot.message_handler(content_types=['text'])
        async def get_messages(message):
            msg = message.text
            bot.send_message(call.message.chat.id, f'ВТОРОЙ ТЕКСТДобавлено время {msg} на дату {FreeDayList[1]}')
         

В условиях нажатия этих кнопок присутствуют хэндлеры на обработку получаемого текста

Проблема заключается в том, что какую бы кнопку я не нажал, бот будет ссылаться только на первое условие if
if call.data == '1day':

Конечно код сократил на наглядности, кнопок всего 14, и все так же при нажатии на любую из них бот берет только первый if, хотя callback не соотвутствует нажатой кнопке

Ответы

Ответов пока нет.