gpt4 book ai didi

python - Telegram Python ConversationHandler 记住旧答案

转载 作者:行者123 更新时间:2023-12-05 08:54:36 26 4
gpt4 key购买 nike

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

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

看起来每个函数都返回后续步骤(GENDER->PHOTO->LOCATION->BIO)但是有没有办法查看之前的输入是什么?

最佳答案

我遇到了完全相同的问题,我需要保留之前用户对对话的回答。看看Handler文档,它是所有处理程序的基类。它有一个名为 pass_user_data 的参数。当设置为 True 时,它​​会将 user_data 字典传递给您的处理程序,并且它与发送更新的用户相关。您可以利用它来实现您正在寻找的东西。

假设我与一个入口点和两个状态进行对话:

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)],
},
)

以下是对话的处理程序:

def show_options(bot, update):
button_list = [
[InlineKeyboardButton("Option 1", callback_data="Option 1"),
InlineKeyboardButton("Option 2", callback_data="Option 2")]]

update.message.reply_text("Here are your options:", reply_markup=InlineKeyboardMarkup(button_list))
return PROCESS_SELECT

def process_select(bot, update, user_data):
query = update.callback_query
selection = query.data
# save selection into user data
user_data['selection'] = selection
return SOME_OTHER

def some_other(bot, update, user_data):
# here I get my old selection
old_selection = user_data['selection']

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

关于python - Telegram Python ConversationHandler 记住旧答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49203161/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com