Как заставить работать два CallBack Handler в Телеграм Боте на Python?

Добрый день. У меня имеется в телеграмм боте две inlne клавиатуры.
Обе работают по отдельности в разных файлах, либо если одну из них закоменитить.
Пробовал вынести одну клавиатуру в другой файл, но результат тот же.

Я так понимаю, что
@bot.callback_query_handler(func=lambda c: True)
этот хэнделр, что стоит в коде выше - пытается обработать клавиатуру, которая в коде ниже.

Помогите пожалуйста разобраться. Код клавиатур довольно стандартный, вот например первая:
#Курсы валют
@bot.message_handler(regexp="Курсы валют")
def value_message(message):
    keyboardV = types.InlineKeyboardMarkup()
    kbv1 = types.InlineKeyboardButton(text="Доллар", callback_data="USD")
    kbv2 = types.InlineKeyboardButton(text="Евро", callback_data="EUR")
    kbv3 = types.InlineKeyboardButton(text="Фунт", callback_data="GBP")
    keyboardV.add(kbv1, kbv2, kbv3)
    bot.send_message(message.chat.id, "Выберите валюту: ", reply_markup=keyboardV)


Второй:
@bot.message_handler(regexp="Новости")
def selectCounrty(message):
    # Клавиатура выбора стран
    keyboard = types.InlineKeyboardMarkup()
    kb1 = types.InlineKeyboardButton(text="Россия", callback_data="country1")
    kb2 = types.InlineKeyboardButton(text="Германия", callback_data="country2")
    keyboard.add(kb1, kb2)
    bot.send_message(message.chat.id, "Список стран: ", reply_markup=keyboard)
  • Вопрос задан
  • 5661 просмотр
Пригласить эксперта
Ответы на вопрос 1
@domoarigato
@bot.callback_query_handler(func=lambda call: True)


Вместо такой формы можно сделать:
@bot.callback_query_handler(func=lambda call: call.data == "Data")
def callHandler1(call: CallbackQuery):
    #Code

@bot.callback_query_handler(func=lambda call: call.data == "Data2")
def callHandler2(call: CallbackQuery):
    #Code 2


Можно использовать другой вариант - сделать внутри одного хндлера if call.data == "Значение": func1(call), и так для каждого значения, или в самом ифе и писать код.

Надеюсь помог.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы