电报Python会话处理程序记住旧答案

2024-05-20 00:04:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用This ConversationHandler Script作为我的程序的基础。在

如何从以前的状态检索用户答案?例如,当用户被问及他们的简历时,我如何打印他们的性别(这是第一个被问到的问题)?在

看起来每个函数都会返回下一步(GENDER->PHOTO->LOCATION->BIO),但是有没有办法查看以前的输入是什么?在


Tags: 函数答案用户程序状态scriptlocationthis
2条回答

我有这个。。。在

SOME_OTHER: [MessageHandler(filters=Filters.text, callback=some_other, pass_user_data=True)],

TypeError:init()缺少1个必需的位置参数:“fallbacks”

我也遇到了同样的问题,我需要在对话中保留以前的用户答案。看一下Handler文档,它是所有处理程序的基类。它有一个名为pass_user_data的参数。当设置为True时,它将user_data dictionary传递给处理程序,并且它与发送更新的用户相关。你可以利用它来实现你想要的。在

假设我有一个入口点和两个状态的对话:

def build_conversation_handler():
    conversation_handler = ConversationHandler(
        entry_points=[CommandHandler('command', callback=show_options)],
        states={
            PROCESS_SELECT: [CallbackQueryHandler(process_select, pass_user_data=True)],
            SOME_OTHER: [MessageHandler(filters=Filters.text, callback=some_other, pass_user_data=True)],
        },
    )

以下是对话的处理程序:

^{pr2}$

在第一个处理程序中,我显示用户键盘来选择一个选项,在下一个处理程序中,我从回调查询中获取选择并将其存储到用户数据中。最后一个处理程序是一个消息处理程序,因此它没有回调数据,但是由于我向它添加了user_数据,所以我可以使用之前添加的数据访问字典。使用这种方法,您可以在处理程序之间存储和访问与用户相关的任何内容。在

相关问题 更多 >