Телеграм бот не реагирует на кнопки c типом CallBack
Телеграм бот не реагирует на кнопки с типом CallBack.
Команда /start работает.
Ошибок при запуске бота и нажатии на кнопку не выдаёт. Бот является моим тестом так что альтернативное решение через content_types=['text']
для меня не подходит
import telebot
from telebot import types
bot = telebot.TeleBot('token');
@bot.message_handler(commands=['start'])
def start(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.InlineKeyboardButton(text = "Да", callback_data = 'yes')
btn2 = types.InlineKeyboardButton(text = "Нет", callback_data = 'no')
markup.add(btn1, btn2)
bot.send_message(message.chat.id, text="Привет, {0.first_name}! Входим?".format(message.from_user), reply_markup=markup)
@bot.callback_query_handler(func=lambda callback:True)
def callBackOne(callback):
if callback.data == 'yes':
bot.send_message(call.chat.id, text="Вы успешно вошли")
if callback.data == 'no':
ifno = types.ReplyKeyboardMarkup(resize_keyboard=True)
buttonStart = types.InlineKeyboardButton("/start")
ifno.add(buttonStart)
bot.send_message(call.chat.id, text="Ждём вас снова!", reply_markup = ifno)
bot.polling(none_stop=True)
Ответы (1 шт):
Автор решения: Amgarak
→ Ссылка
- Надо создавать
InlineKeyboardMarkup
, обычная клавиатура отправляет текст(сообщения), а неcallback
- Вместо
call.chat.id
нужно использоватьcallback.message.chat.id
- Как пример: добавил обработку для
callback - start
import telebot
from telebot import types
bot = telebot.TeleBot('TOKEN');
@bot.message_handler(commands=['start'])
def start(message):
markup = types.InlineKeyboardMarkup()
btn1 = types.InlineKeyboardButton(text="Да", callback_data='yes')
btn2 = types.InlineKeyboardButton(text="Нет", callback_data='no')
markup.row(btn1, btn2)
bot.send_message(message.chat.id, text="Привет, {0.first_name}! Входим?".format(message.from_user), reply_markup=markup)
@bot.callback_query_handler(func=lambda callback: True)
def callBackOne(callback):
if callback.data == 'yes':
bot.send_message(callback.message.chat.id, text="Вы успешно вошли")
elif callback.data == 'no':
markup = types.InlineKeyboardMarkup()
buttonStart = types.InlineKeyboardButton(text="/start", callback_data='start')
markup.row(buttonStart)
bot.send_message(callback.message.chat.id, text="Ждём вас снова!", reply_markup=markup)
elif callback.data == 'start':
start(callback.message)
bot.polling(none_stop=True)