Как заставить работать два 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)
  • Вопрос задан
  • 370 просмотров
Пригласить эксперта
Ответы на вопрос 1
@daveusa
@bot.callback_query_handler(func=lambda c: True)

Хендлер пытается обработать все калбеки.

@bot.message_handler(commands=["start"])
def start_message(message):
    user_markup = telebot.types.ReplyKeyboardMarkup(True, False)
    user_markup.row("Курсы валют", "Новости")
    bot.send_message(message.chat.id, "Добрый день", reply_markup=user_markup)

@bot.message_handler(regexp="Курсы валют")
def value_message(message):
    keyboardV = telebot.types.InlineKeyboardMarkup()
    kbv1 = telebot.types.InlineKeyboardButton(text="Доллар", callback_data="USD")
    kbv2 = telebot.types.InlineKeyboardButton(text="Евро", callback_data="EUR")
    kbv3 = telebot.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 = telebot.types.InlineKeyboardMarkup()
    kb1 = telebot.types.InlineKeyboardButton(text="Россия", callback_data="country1")
    kb2 = telebot.types.InlineKeyboardButton(text="Германия", callback_data="country2")
    keyboard.add(kb1, kb2)
    bot.send_message(message.chat.id, "Список стран: ", reply_markup=keyboard)



@bot.callback_query_handler(func=lambda c:True)
def inline(callback):
    print(callback.data)

bot.polling()


Вот такой код прекрасно работает.
Я сделал вывод калбеков в консоль, а ты их просто обработай через if/elif/else.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
iCode Москва
от 90 000 до 200 000 ₽
SwapZilla.co Сочи
от 200 000 ₽
SwapZilla.co Москва
от 200 000 ₽
10 июл. 2020, в 00:25
80000 руб./за проект
09 июл. 2020, в 23:02
3000 руб./за проект