python-telegram-bot - 处理 ReplyKeyboardMarkup 的输出

python-telegram-bot - process the output of a ReplyKeyboardMarkup

我正在使用 python-telegram-bot,我需要处理回复键盘的输出,以便在进一步的步骤中使用它(例如,return 向用户提供基于她的选择的输出) .

这是我的代码

def start(update, context):
    reply_keyboard = [['Boy', 'Girl', 'Other']]

    update.message.reply_text(
        'Hi! My name is Professor Bot. I will hold a conversation with you. '
        'Send /cancel to stop talking to me.\n\n'
        'Are you a boy or a girl?',
        reply_markup=ReplyKeyboardMarkup(reply_keyboard, one_time_keyboard=True))

如何使用用户的选择来return基于它的数据?上面的代码只是将选择打印到聊天中。

我知道您指的是 python-telegram-bot 的 GitHub 中的示例 conversationbot.py

当用户从 ReplyKeyboard 中选择一个选项时,它将作为消息发送给机器人。因此,您必须接收该消息。为此,您必须使用 ConversationHandler,您可以在其中为对话定义 stages/states。

查看您所指的同一示例。 ConversationHandler 的入口点是 /start 命令。然后机器人用键盘回复。这里的下一个阶段是GENDER(你可以在开始函数中看到return GENDER)。这里MessageHandlerregex一起使用,回调函数是gender()。当用户从选项中选择时,机器人将回复与 ^(Boy|Girl|Other)$ 匹配,如果为真,则调用 gender() 函数。同样,ConversationHandler 中的进一步状态将继续。

最后,ConversationHandler将在到达最后一个状态或发送/cancel(回退)时结束。