- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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/
我正在使用 This ConversationHandler Script作为我的程序的基础。 如何从以前的状态中检索用户的答案?例如,当用户被问及他们的简历时,我如何打印他们的性别(这是被问到的第一
使用 python-telegram-bot ,我有一个运行的机器人,其设置与 other examples 非常相似.另一方面,我有并行进程,允许我定期向与机器人交互的用户发送消息。并行进程使用以下
我想使用ConversationHandler在我的机器人中。至少,它需要三个参数: class telegram.ext.ConversationHandler(entry_points, stat
Python-telegram-bot这是 HTTP Telegram Bot API 包装器具有 telegram.ext.ConversationHandler模块及其功能是: “通过管理四个其他
我是一名优秀的程序员,十分优秀!