是否有任何存储库可以使 Telebot 标记按钮可分页

问题描述

我正在使用 https://github.com/eternnoir/pyTelegramBotAPI,我必须使标记按钮可分页。是否有任何存储库可以帮助解决我的问题?还是我应该自己做?如果是的话,如果你给我一些建议,如何实现它,我会很高兴

markup

解决方法

要做到这一点,您可以创建一些内联键盘,然后在此处使用方法 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()

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...