Задать вопрос
@yoperesete_eteserepoy

Как связать Inline кнопки? Как создать цепочку из Inline кнопок для создания повествования?

Идея в том, чтобы вызывать кнопки друг за другом. После вызова команды 'start' выводятся две кнопки, при нажатии кнопки "направо" выводится еще одна пара кнопок, и на этом все, хотя есть еще блоки кода с кнопками.
#1
def create_keyboard():
  keyboard = InlineKeyboardMarkup()
  keyboard.row(
    InlineKeyboardButton("Направо", callback_data='right1'),
    InlineKeyboardButton("Налево", callback_data='left1')
  )  
  return keyboard   

#приветствие и запуск квеста
@bot.message_handler(commands=['start'])  
def start_message(message):  
    bot.send_message(message.chat.id, "Привет! Ты попал в заколдованный лабиринт. Куда пойдешь?", reply_markup=create_keyboard()) 

    #2
def create_keyboard1():
  keyboard = InlineKeyboardMarkup()
  keyboard.row(
    InlineKeyboardButton("Направо", callback_data='right2'),
    InlineKeyboardButton("Налево", callback_data='left2')
  )  
  return keyboard  
    
    #1.1
@bot.callback_query_handler(func=lambda call: True)
def callback_query(call):
  if call.data == 'right1':
    bot.send_message(call.message.chat.id, "Ты выбрал пойти направо. А теперь?", reply_markup=create_keyboard1()) # переход к следующему блоку
  elif call.data == 'left1':
    bot.send_message(call.message.chat.id, "Ты выбрал пойти налево. Твой путь заканчивается здесь.") # тупик 
    #2.2
@bot.callback_query_handler(func=lambda call: True)
def callback_query(call):
  if call.data == 'right2':
    bot.send_message(call.message.chat.id, "Ты выбрал пойти направо. Куда дальше?", reply_markup=create_keyboard2())
  elif call.data == 'left2':
    bot.send_message(call.message.chat.id, "Ты выбрал пойти налево. Твой путь заканчивается здесь.")
 #3 
def create_keyboard2():
  keyboard = InlineKeyboardMarkup()
  keyboard.row(
    InlineKeyboardButton("Направо", callback_data='right3'),
    InlineKeyboardButton("Налево", callback_data='left3')
  )  
  return keyboard 
#3.3
@bot.callback_query_handler(func=lambda call: True)
def callback_query(call):
  if call.data == "right3":
    bot.send_message(call.message.chat.id, "Ты выбрал направо. Идем дальше?", reply_markup=create_keyboard3())
  elif call.data == "left3":
    bot.send_message(call.message.chat.id, "Ты выбрал налево. Мне жаль, ты умер.")
  • Вопрос задан
  • 431 просмотр
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
nki
@nki
bezkart.ru готовая система лояльности
Как вы считаете, как из этих трех (!!!) функций вызывается?
@bot.callback_query_handler(func=lambda call: True)
def callback_query(call):

Основы подтяните и потом уже пишите бота.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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