телеграм бот лезет в неправильный elif
У бота есть хендлер на команду "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 не соотвутствует нажатой кнопке
Источник: Stack Overflow на русском