gpt4 book ai didi

python - 如何在电报机器人对话处理程序的对话中保存数据

转载 作者:行者123 更新时间:2023-12-05 00:46:23 24 4
gpt4 key购买 nike

我正在构建一个电报机器人。

我的机器人的一项功能要求机器人查询用户以在选择之间进行选择。听到的是我查询用户的代码

def entry_point(update: Update, context: CallbackContext):
companies_btn = [
[
InlineKeyboardButton(company.company_name, callback_data=company.id)
for company in get_companies()
]
]
companies_keyword = InlineKeyboardMarkup(companies_btn)
update.message.reply_text(
"Please pick a company", reply_markup=companies_keyword
)
return 1


def user_picked_company(update: Update, context: CallbackContext):
stores_btn = [
[
InlineKeyboardButton(store.store_name, callback_data=store.id)
for store in get_stores()
]
]

store_keyword = InlineKeyboardMarkup(stores_btn)
update.message.reply_text(
"Please pick a store", reply_markup=store_keyword
)
return 2


def user_picked_store(update: Update, context: CallbackContext):
save_user_choices()


handler = ConversationHandler(
entry_points=[CommandHandler('pick', entry_point)],
states={
1: CallbackQueryHandler(user_picked_company),
2: CallbackQueryHandler(user_picked_store)
},
fallbacks=[entry_point],
per_chat=True,
per_user=True,
per_message=True
)

如您所见,在 user_picked_store 函数中,我需要保存用户选择(只有在用户选择所有信息后才能保存在数据库中)。因此我需要访问用户所做的所有选择,我想将其存储在函数外部的对象中,因此所有函数都可以使用它,但是如果同时发出多个请求,此解决方案将不起作用(每个请求都会覆盖另一个)。

有没有办法为每个对话实例保存状态?

每个 session 是否有 session ID?

最佳答案

你有 context.user_data 字典,它是跨对话持久的,你可以用它来存储所有用户的选择。

例如

query = update.callback_query
querydata = query.data
context.user_data["key"] = querydata

关于python - 如何在电报机器人对话处理程序的对话中保存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60886088/

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