使用 InlineKeyboardButton python 电报机器人发送命令
Send a command using InlineKeyboardButton python telegram bot
在 python telegram bot 中,InlineKeyboardButton
是否可以在按下时发送类似 /cancel
的命令?
例如,当用户按下取消按钮时,他们会自动发送一个 /cancel 命令,然后由 bot 处理。
来自此处的示例:
https://github.com/python-telegram-bot/python-telegram-bot/blob/master/examples/inlinekeyboard2.py
conv_handler = ConversationHandler(
entry_points=[CommandHandler('start', start)],
states={
FIRST: [CallbackQueryHandler(one, pattern='^' + str(ONE) + '$'),
CallbackQueryHandler(two, pattern='^' + str(TWO) + '$'),
CallbackQueryHandler(three, pattern='^' + str(THREE) + '$'),
CallbackQueryHandler(four, pattern='^' + str(FOUR) + '$')],
SECOND: [CallbackQueryHandler(start_over, pattern='^' + str(ONE) + '$'),
CallbackQueryHandler(end, pattern='^' + str(TWO) + '$')]
},
fallbacks=[CommandHandler('start', start)]
)
我希望能够这样做,以便我可以更改入口点并在按下按钮时使用不同的对话处理程序。
然后按下该按钮将生成一个 /cancel 命令,该命令会将机器人带到不同的对话处理程序。
这可能吗?
为了处理 InlineKeyboardButton
的输入,您定义了一个 CallbackQueryHandler
,它将处理用户按下的按钮的 callback_data
。
即使您指定了一个命令,CallbackQueryHandler
也会由处理输入的命令
#'/help' sent to CallbackQueryHandler
options.append(InlineKeyboardButton("a", callback_data="/help"))
如果我理解正确你想实现什么,我会定义一个 CallbackQueryHandler 方法,然后控制工作流,甚至可以调用命令(如果这是你需要做的)
def callback_query_handler(update, context):
# process input
input = update.callback_query.data
# invoke handler
if input == '/help':
help_command_handler(update, context)
在 python telegram bot 中,InlineKeyboardButton
是否可以在按下时发送类似 /cancel
的命令?
例如,当用户按下取消按钮时,他们会自动发送一个 /cancel 命令,然后由 bot 处理。
来自此处的示例:
https://github.com/python-telegram-bot/python-telegram-bot/blob/master/examples/inlinekeyboard2.py
conv_handler = ConversationHandler(
entry_points=[CommandHandler('start', start)],
states={
FIRST: [CallbackQueryHandler(one, pattern='^' + str(ONE) + '$'),
CallbackQueryHandler(two, pattern='^' + str(TWO) + '$'),
CallbackQueryHandler(three, pattern='^' + str(THREE) + '$'),
CallbackQueryHandler(four, pattern='^' + str(FOUR) + '$')],
SECOND: [CallbackQueryHandler(start_over, pattern='^' + str(ONE) + '$'),
CallbackQueryHandler(end, pattern='^' + str(TWO) + '$')]
},
fallbacks=[CommandHandler('start', start)]
)
我希望能够这样做,以便我可以更改入口点并在按下按钮时使用不同的对话处理程序。
然后按下该按钮将生成一个 /cancel 命令,该命令会将机器人带到不同的对话处理程序。
这可能吗?
为了处理 InlineKeyboardButton
的输入,您定义了一个 CallbackQueryHandler
,它将处理用户按下的按钮的 callback_data
。
即使您指定了一个命令,CallbackQueryHandler
也会由处理输入的命令
#'/help' sent to CallbackQueryHandler
options.append(InlineKeyboardButton("a", callback_data="/help"))
如果我理解正确你想实现什么,我会定义一个 CallbackQueryHandler 方法,然后控制工作流,甚至可以调用命令(如果这是你需要做的)
def callback_query_handler(update, context):
# process input
input = update.callback_query.data
# invoke handler
if input == '/help':
help_command_handler(update, context)