使用 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)