Многоуровневое меню:
@bot.message_handler(content_types=["text"])
def any_msg(message):
keyboardmain = types.InlineKeyboardMarkup(row_width=2)
first_button = types.InlineKeyboardButton(text="1button", callback_data="first")
second_button = types.InlineKeyboardButton(text="2button", callback_data="second")
keyboardmain.add(first_button, second_button)
bot.send_message(message.chat.id, "testing kb", reply_markup=keyboardmain)
@bot.callback_query_handler(func=lambda call:True)
def callback_inline(call):
if call.data == "mainmenu":
keyboardmain = types.InlineKeyboardMarkup(row_width=2)
first_button = types.InlineKeyboardButton(text="1button", callback_data="first")
second_button = types.InlineKeyboardButton(text="2button", callback_data="second")
keyboardmain.add(first_button, second_button)
bot.edit_message_text(chat_id=call.message.chat.id,message_id=call.message.message_id, text="menu",reply_markup=keyboardmain)
if call.data == "first":
keyboard = types.InlineKeyboardMarkup()
rele1 = types.InlineKeyboardButton(text="1t", callback_data="1")
rele2 = types.InlineKeyboardButton(text="2t", callback_data="2")
rele3 = types.InlineKeyboardButton(text="3t", callback_data="3")
backbutton = types.InlineKeyboardButton(text="back", callback_data="mainmenu")
keyboard.add(rele1, rele2, rele3, backbutton)
bot.edit_message_text(chat_id=call.message.chat.id,message_id=call.message.message_id, text="replaced text",reply_markup=keyboard)
elif call.data == "second":
keyboard = types.InlineKeyboardMarkup()
rele1 = types.InlineKeyboardButton(text="another layer", callback_data="gg")
backbutton = types.InlineKeyboardButton(text="back", callback_data="mainmenu")
keyboard.add(rele1,backbutton)
bot.edit_message_text(chat_id=call.message.chat.id,message_id=call.message.message_id, text="replaced text",reply_markup=keyboard)
elif call.data == "1" or call.data == "2" or call.data == "3":
bot.answer_callback_query(callback_query_id=call.id, show_alert=True, text="alert")
keyboard3 = types.InlineKeyboardMarkup()
button = types.InlineKeyboardButton(text="lastlayer", callback_data="ll")
keyboard3.add(button)
bot.edit_message_text(chat_id=call.message.chat.id,message_id=call.message.message_id, text="last layer",reply_markup=keyboard3)
При переходе во внутренние слои меню, кнопки предыдущих слоев не убираются, а при возвращении назад, добавляются кнопки вниз друг за другом.
Взял код из
видео на youtube, у автора видео все работает как и задумано, а у меня кнопки выстраиваются друг за другом, как это можно исправить?