Универсальная кнопка "назад" Telebot
Python, telebot. Кусок кода для примера:
def next_mess_button():
keyboard = types.InlineKeyboardMarkup()
button = types.InlineKeyboardButton("Показать следующее сообщение", callback_data="call_2")
keyboard.add(button)
return keyboard
def back_button():
keyboard = types.InlineKeyboardMarkup()
button = types.InlineKeyboardButton("Назад", callback_data="call_1")
keyboard.add(button)
return keyboard
@bot.callback_query_handler(func=lambda call: True)
def callback(call):
if call.data == "call_1":
bot.delete_message(call.from_user.id, call.message.message_id)
bot.send_message(
call.from_user.id,
"Text",
reply_markup=next_mess_button()
)
elif call.data == "call_2":
bot.delete_message(call.from_user.id, call.message.message_id)
bot.send_message(
call.from_user.id,
"Следующее сообщение",
reply_markup=back_button()
)
Допустим, мы каким-то образом вызвали call_1 и под сообщением "Text" нажали на кнопку "Показать следующее сообщение". Далее удаляется первое сообщение и мы видим сообщение "Следующее сообщение" с кнопкой "Назад". При нажатии кнопки "Назад" удаляется "Следующее сообщение" с кнопкой "Назад" и появляется снова "Text" с кнопкой "Показать следующее сообщение". Вопрос: можно ли кнопку "Назад" сделать универсальной таким образом, чтобы она всегда удаляла любое предыдущее сообщение? Логично в callback_data кнопки "Назад" передавать колбек предыдущего сообщения, но это сработает один раз, и мы не сможем как, например, в браузере, нажимая "Назад" и откатываясь на какое угодно количество страниц назад, откатываться на какое угодно количество сообщений в боте. Кнопку "назад" и удаление предыдущего сообщения хочу сделать в каждом новом сообщении или клавиатуре, чтобы не засорять ленту. Слышал про стейты, но как применить, не совсем понимаю. Опять же, как и в прошлых моих вопросах, получается, сколько возможных сообщений в боте, столько и стейтов? А если сообщений 100+? Должно же быть какое-то красивое решение...