Как сделать inline кнопку назад в telebot?
@bot.message_handler(commands=['start'])
def main(message):
markup = types.InlineKeyboardMarkup()
btn1 = types.InlineKeyboardButton('Заполнить анкету', url='https://gamergains.com')
markup.row(btn1)
btn2 = types.InlineKeyboardButton('Инфо', callback_data='Инфо')
btn3 = types.InlineKeyboardButton('?Форум тема', callback_data='forum')
markup.row(btn2,btn3)
bot.send_message(message.chat.id, 'Привет!', reply_markup=markup)
@bot.callback_query_handler(func=lambda call: True)
def answer (call):
if call.data == "forum":
markup1 = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn4 = types.InlineKeyboardButton('?back', callback_data='back')
markup1.row(btn4)
bot.send_message(call.message.chat.id, 'https://google.com')
elif message.text == 'Назад':
main(message)
bot.polling(non_stop=True)
Ответы (1 шт):
Автор решения: Violet
→ Ссылка
- необходимо использовать
InlineKeyboardMarkup()дляmarkup1 - добавить
reply_markupкsend_messageв блокеif call.data == 'forum' - вместо
elif message.text == 'Назад'необходимо использоватьelif call.data == 'back' - добавить изменение или отправку сообщения в блоке
elif call.data == 'back'с указаниемreply_markupсо значением функцииmain
Итоговый код:
@bot.message_handler(commands=['start'])
def main(message):
markup = types.InlineKeyboardMarkup()
btn1 = types.InlineKeyboardButton('Заполнить анкету', url='https://gamergains.com')
markup.row(btn1)
btn2 = types.InlineKeyboardButton('Инфо', callback_data='Инфо')
btn3 = types.InlineKeyboardButton('?Форум тема', callback_data='forum')
markup.row(btn2, btn3)
bot.send_message(message.chat.id, 'Привет!', reply_markup=markup)
@bot.callback_query_handler(func=lambda call: True)
def answer(call):
if call.data == "forum":
markup1 = types.InlineKeyboardMarkup()
btn4 = types.InlineKeyboardButton('?back', callback_data='back')
markup1.row(btn4)
bot.send_message(call.message.chat.id, 'https://google.com', reply_markup=markup1)
elif call.data == 'back':
bot.edit_message_text(call.message.text, call.message.chat.id, call.message.message_id,
reply_markup=main(call.message))