欢迎访问宙启技术站
智能推送

InlineKeyboardMarkup()的用法和示例——Python中的交互式键盘

发布时间:2023-12-25 08:39:03

InlineKeyboardMarkup是Python中python-telegram-bot库中的一个类,用于创建交互式的Inline键盘。

使用InlineKeyboardMarkup类可以创建一个包含多个按钮的键盘。每个按钮都可以设置其文本和回调数据。当用户点击按钮时,将触发指定的回调函数并接收到回调数据。

下面是InlineKeyboardMarkup类的构造函数的定义:

class InlineKeyboardMarkup(types.InlineKeyboardMarkup):

def __init__(self,

inline_keyboard: List[List[types.InlineKeyboardButton]],

**kwargs: Any):

...

在构造函数中,传入的参数是一个列表,列表中的每个元素也是一个列表,表示每一行按钮。每个按钮是一个InlineKeyboardButton对象。

下面是InlineKeyboardButton类的定义:

class InlineKeyboardButton(types.InlineKeyboardButton):

def __init__(self,

text: str,

callback_data: Optional[str] = None,

switch_inline_query: Optional[str] = None,

switch_inline_query_current_chat: Optional[str] = None,

callback_game: Optional[types.CallbackGame] = None,

pay: Optional[bool] = None):

...

InlineKeyboardButton类的构造函数中也有一些可选参数,如回调数据(callback_data)、内联查询(switch_inline_query)等。

下面是一个使用InlineKeyboardMarkup的示例代码:

from telegram import InlineKeyboardButton, InlineKeyboardMarkup
from telegram.ext import Updater, CommandHandler

# 定义一个回调函数,用于处理点击按钮时的操作
def button_click(update, context):
    query = update.callback_query
    query.answer()
    query.edit_message_text(text="You clicked the button!")

# 创建一个InlineKeyboardMarkup对象
keyboard = [
    [
        InlineKeyboardButton("Button 1", callback_data='button1'),
        InlineKeyboardButton("Button 2", callback_data='button2')
    ]
]

# 构造InlineKeyboardMarkup对象
reply_markup = InlineKeyboardMarkup(keyboard)

# 注册按钮点击事件
updater.dispatcher.add_handler(CallbackQueryHandler(button_click))

# 发送一条消息并附上键盘
def start(update, context):
    context.bot.send_message(chat_id=update.effective_chat.id, text="Hello, World!", reply_markup=reply_markup)

# 注册命令
updater.dispatcher.add_handler(CommandHandler('start', start))

# 启动机器人
updater.start_polling()

在上面的示例代码中,我们首先定义了一个回调函数button_click,用于处理按钮的点击事件。然后,我们创建了一个由两个按钮组成的键盘,其中每个按钮都有一个回调数据。接下来,我们通过构造InlineKeyboardMarkup对象,将键盘对象传递给reply_markup参数。最后,我们在start函数中使用reply_markup参数将键盘发送给用户。

当用户点击键盘上的按钮时,将触发button_click函数,并在聊天中显示"You clicked the button!"的文本。