Как доступиться к callback клавиатуры?
Пишу телеграмм-бот. При создании клавиатуры
kb_1 = keyboa_maker(items=answers, copy_text_to_callback=True)
ответ пользователя сохраняется в какой то callback.
Мне далее нужно обратиться к ответу, и я не понимаю где он находиться
from keyboa import keyboa_maker
import telebot
import file_parser as parser
bot = telebot.TeleBot('токен')
answers = ['Домашнюю', 'Сколько звезд на небе', 'Зачем носорогу рог']
kb_1 = keyboa_maker(items=answers, copy_text_to_callback=True)
@bot.message_handler(commands=['start'])
def start_message(message):
bot.send_message(message.chat.id,
'Привет, это Бот-песочница Глеба, можешь по пользоваться, скоро будем тут тестировать технологии')
bot.send_message(
chat_id=message.chat.id, reply_markup=kb_1,
text="Что хотим узнать???")
@bot.message_handler(content_types=['text'])
def send_text(message):
if КАКАЯ_ПЕРЕМЕННАЯ == 'Домашнюю':
bot.send_message(message.chat.id, 'Не скажу')
elif КАКАЯ_ПЕРЕМЕННАЯ == 'Сколько звезд на небе':
bot.send_message(message.chat.id, 'Много')
elif КАКАЯ_ПЕРЕМЕННАЯ == 'Зачем носорогу рог':
bot.send_message(message.chat.id, 'Чтобы называться носорогом')
Ответы (2 шт):
Автор решения: Іван Шнір
→ Ссылка
Вот код, который должен вам помочь с решением вашего вопроса:
@bot.callback_query_handler(func=lambda call: True)
def send_text(call):
if call.data == 'Домашнюю':
bot.send_message(call.message.chat.id, 'Не скажу')
elif call.data == 'Сколько звезд на небе':
bot.send_message(call.message.chat.id, 'Много')
elif call.data == 'Зачем носорогу рог':
bot.send_message(call.message.chat.id, 'Чтобы называться носорогом')
Автор решения: Denis Rudnitskiy
→ Ссылка
Чтобы inline-клавиатура работала корректно - требуется проверить какой из callback-ов поступил в обработчик.
Простой пример:
...
button = types.InlineKeyboardMarkup(row_width=1)
new = types.InlineKeyboardButton('Тест', callback_data='test')
button.add(new)
bot.send_message(message.chat.id, 'Это пример строки', reply_markup=button)
@bot.callback_query_handler(func=lambda call:True)
def send_text(call):
if call.data == 'test':
return bot.send_message(call.message.chat.id, 'Это тест кнопки')