@Loknut

Как сделать перелистывание в телеграм боте?

Как сделать перелистывание в телграм боте на питоне, библиотека TelegramBotAPI?
То есть пользователю выводится текст, и чтобы вывелся следующий - на инлайновой клавиатуре пользователь должен нажать на стрелочку. Можно так же вернуться к предыдущему тексту. То есть обычное перелистывание страниц. И если можно, пример кода.

Я расписываю через if.
def baby(message):
    if message.chat.type == 'private':
            if message.text == 'Культурный отдых \N{Dancer}':
                bot.send_photo(message.chat.id, open('imagine/41.jpg', 'rb'), caption='\N{Potted Plant} Забайкальский ботанический сад.')
  • Вопрос задан
  • 895 просмотров
Пригласить эксперта
Ответы на вопрос 2
SoreMix
@SoreMix Куратор тега Python
yellow
Определяете размер текста в одном сообщении, пусть будет 10 символов. Предположим, текст лежит в переменной text. Строки поддерживают срезы, ими и пользуемся. В первом сообщении отправляются первые 10 символов:
text[:10]. К сообщению цепляются две инлайн кнопки, ну для первой то страницы можно и одну просто. В callback_data можно использовать любое удобное значение, главное чтобы было понятно какой срез взять. Можно просто цифры. Для первой страницы в callback_data будет 2. В обработчике нажатия кнопки вызываем метод редактирования Сообщения, в качестве текста передаём новый срез, где в срез от идёт значение чанк*цифра колбэк даты, срез ДО чанк+1*цифра, к сообщению так же редактируется клавиатура, где цифра в кнопке предыдущей страницы становится равной текущей, а в следующей +1. Короче просто срезы и всё

@bot.callback_query_handler(func=lambda call: True)
def callback_query(call):

    page = int(call.data)

    f = (page-1)*chunk
    s = page*chunk

    kb = types.InlineKeyboardMarkup()
    kb.add(types.InlineKeyboardButton('<', callback_data=page), types.InlineKeyboardButton('>', callback_data=page+1))


    bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text=text[f:s], reply_markup=kb)
Ответ написан
Musickk
@Musickk
Пёс
это вообще не то, инлайн кнопки прописываются совершенно не так, советую почитать документацию pytelegrambotAPI (потому что ответ на хабре никак не сравниться с оффициальной документацией телебота)
Ответ написан
Ваш ответ на вопрос

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

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