InlineKeyboardMarkup()的用法和示例——Python中的交互式键盘
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!"的文本。
