我想问的关于InlineKeyboardMarkup
的问题是,当用户用callback_data
点击InlineKeyboardButton
按钮时,如何捕捉事件,以及如何调用和处理它?
下面是我代码的一部分。
from telegram import InlineKeyboardMarkup, InlineKeyboardButton
from telegram.ext import Updater, CommandHandler
API = "1234567890:API_Example"
Bot = Updater(API, use_context = True)
Dispatcher = Bot.dispatcher
def start_command(update, context):
RM = InlineKeyboardMarkup(
[[InlineKeyboardButton(
text = "example button text",
callback_data = "example data")
]])
message = "example message"
context.bot.send_message(update.effective_chat.id, message,reply_markup = RM)
Dispatcher.add_handler(CommandHandler("start", start_command))
Bot.start_polling()
您需要将CallbackQueryHandler
添加到Dispatcher中,如:
CallbackQueryHandler(handler_yes_no, pattern=r'^(yes|no)$'),
完整示例:
from telegram import InlineKeyboardMarkup, InlineKeyboardButton
from telegram.ext import Updater, CommandHandler
API = "1234567890:API_Example"
Bot = Updater(API, use_context = True)
Dispatcher = Bot.dispatcher
def start_command(update, context):
RM = InlineKeyboardMarkup([
[InlineKeyboardButton(text="Yes", callback_data="yes")],
[InlineKeyboardButton(text="No", callback_data="no")],
])
message = "Are you sure?"
context.bot.send_message(update.effective_chat.id, message, reply_markup=RM)
def handler_yes_no(update, context):
callback_data = update.callback_query.data
update.callback_query.answer()
print(callback_data)
Dispatcher.add_handler(CommandHandler("start", start_command))
Dispatcher.add_handler(CallbackQueryHandler(handler_yes_no, pattern=r'^(yes|no)$'),)
Bot.start_polling()
附言:不要忘记PEP8代码风格指南:(