Почему не получается сделать так, чтобы кнопка next page работала в телеботе?
Нужно, чтобы кнопка next page работала в телеботе.
import telebot
from telebot import types
from telebot.types import InlineKeyboardMarkup, InlineKeyboardButton
# Обращение к библиотеке. Обращение к классу
bot = telebot.TeleBot('6649259897:AAFTgb8lEaqj4hrH83Mly6ZPjU6Dl2iapG0')
page = 1
count = 10
# Дикоратор для функции через обращение как Боту.
@bot.message_handler(commands=['start'])
def main(message):
markup = types.InlineKeyboardMarkup()
markup.add(types.InlineKeyboardButton('текст', callback_data='1'))
bot.send_message(message.chat.id, f'Привет, {message.from_user.first_name}!', reply_markup=markup)
@bot.callback_query_handler(func=lambda call: True)
def callback_message(call):
global count
global page
if call.data == '1':
markup = InlineKeyboardMarkup()
markup.add(InlineKeyboardButton(text='Скрыть', callback_data='unseen'))
markup.add(InlineKeyboardButton(text=f'{page}/{count}', callback_data=f' '),
InlineKeyboardButton(text=f'Вперёд --->', callback_data=f'next-page'))
bot.send_message(call.from_user.id, "Привет!!!", reply_markup=markup)
# Обработка кнопки - вперед
if call == 'next-page':
if page < count:
page = page + 1
markup = InlineKeyboardMarkup()
markup.add(InlineKeyboardButton(text='Скрыть', callback_data='unseen'))
markup.add(InlineKeyboardButton(text=f'<--- Назад', callback_data=f'back-page'),
InlineKeyboardButton(text=f'{page}/{count}', callback_data=f' '),
InlineKeyboardButton(text=f'Вперёд --->', callback_data=f'next-page'))
bot.edit_message_text(f'Страница {page} из {count}', reply_markup=markup, chat_id=call.message.chat.id,
message_id=call.message.message_id)
# Обработка кнопки - назад
elif call == 'back-page':
if page > 1:
page = page - 1
markup = InlineKeyboardMarkup()
markup.add(InlineKeyboardButton(text='Скрыть', callback_data='unseen'))
markup.add(InlineKeyboardButton(text=f'<--- Назад', callback_data=f'back-page'),
InlineKeyboardButton(text=f'{page}/{count}', callback_data=f' '),
InlineKeyboardButton(text=f'Вперёд --->', callback_data=f'next-page'))
bot.edit_message_text(f'Страница {page} из {count}', reply_markup=markup, chat_id=call.message.chat.id,
message_id=call.message.message_id)
if __name__ == '__main__':
bot.polling(none_stop=True)
Ответы (1 шт):
Автор решения: Cheburkek
→ Ссылка
Вот нужная часть кода. Для кнопки "Назад" можете сами сделать по аналогии, для обучения)
@bot.callback_query_handler(func=lambda callback: True)
def callback_message(callback):
global COUNT
text = f'{PAGE}/{COUNT}'
if callback.data == '1':
markup = types.InlineKeyboardMarkup()
btn1 = types.InlineKeyboardButton(text='Скрыть', callback_data='unseen')
btn2 = types.InlineKeyboardButton(text=text, callback_data='None')
btn3 = types.InlineKeyboardButton(text='Вперёд --->', callback_data='next')
markup.add(btn1)
markup.add(btn2, btn3)
bot.send_message(callback.message.chat.id, "Привет!!!", reply_markup=markup)
elif callback.data == 'next':
next_page(callback)
def next_page(callback):
global PAGE
PAGE += 1
if PAGE < COUNT:
markup = types.InlineKeyboardMarkup()
btn1 = types.InlineKeyboardButton(text='Скрыть', callback_data='unseen')
btn2 = types.InlineKeyboardButton(text='<--- Назад', callback_data='back-page')
btn3 = types.InlineKeyboardButton(text=f'{PAGE}/{COUNT}', callback_data='None')
btn4 = types.InlineKeyboardButton(text='Вперёд --->', callback_data='next-page')
markup.add(btn1)
markup.add(btn2, btn3, btn4)
bot.edit_message_text(text=f'Страница {PAGE} из {COUNT}', chat_id=callback.message.chat.id, message_id=callback.message.message_id, reply_markup=markup)
Если ответ помог, просьба отметить его галочкой слева