问题描述
我正在使用 https://github.com/eternnoir/pyTelegramBotAPI,我必须使标记按钮可分页。是否有任何存储库可以帮助解决我的问题?还是我应该自己做?如果是的话,如果你给我一些建议,如何实现它,我会很高兴
解决方法
要做到这一点,您可以创建一些内联键盘,然后在此处使用方法 edit_message_reply_markup
一些代码:
from telebot import TeleBot
from telebot.types import InlineKeyboardMarkup as InlKeyMake
from telebot.types import InlineKeyboardButton as InlKeyBut
TOKEN = 'TOKEN'
bot = TeleBot(TOKEN)
def keyTemplate(row):
key = InlKeyMake()
key.row_width = row
return key
# creating some keyboard
def page1():
key = keyTemplate(2)
key.add(
InlKeyBut('But1',callback_data='1'),InlKeyBut('But2',InlKeyBut('New page',callback_data='page2')
)
return key
def page2():
key = keyTemplate(3)
key.add(
InlKeyBut('But3',callback_data='3'),InlKeyBut('But4',callback_data='4'),callback_data='page3')
)
return key
def page3():
key = keyTemplate(2)
key.add(
InlKeyBut('But5',callback_data='5'),InlKeyBut('But6',callback_data='6'),InlKeyBut('Start page',callback_data='page1')
)
return key
@bot.message_handler(commands=['start'])
def start(msg):
testo = '''Menu'''
key = page1()
bot.send_message(msg.chat.id,testo,reply_markup=key)
@bot.callback_query_handler(func=lambda call: call.data == 'page1')
def page1go(call):
key = page1()
bot.edit_message_reply_markup(call.from_user.id,call.message.id,reply_markup=key)
@bot.callback_query_handler(func=lambda call: call.data == 'page2')
def page2go(call):
key = page2()
bot.edit_message_reply_markup(call.from_user.id,reply_markup=key)
@bot.callback_query_handler(func=lambda call: call.data == 'page3')
def page3go(call):
key = page3()
bot.edit_message_reply_markup(call.from_user.id,reply_markup=key)
bot.remove_webhook()
bot.polling()