Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何为电报机器人conversationHandler保存对话中的数据_Python_Python 3.x_Telegram Bot_Python Telegram Bot - Fatal编程技术网

Python 如何为电报机器人conversationHandler保存对话中的数据

Python 如何为电报机器人conversationHandler保存对话中的数据,python,python-3.x,telegram-bot,python-telegram-bot,Python,Python 3.x,Telegram Bot,Python Telegram Bot,我正在建造一个电报机器人 my bot的一项功能要求bot查询用户,以便在选项之间进行选择。 Hear是我查询用户的代码 def entry_point(update: Update, context: CallbackContext): companies_btn = [ [ InlineKeyboardButton(company.company_name, callback_data=company.id) for c

我正在建造一个电报机器人

my bot的一项功能要求bot查询用户,以便在选项之间进行选择。 Hear是我查询用户的代码

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\u picked\u store
中,我需要保存用户选择(只有在用户选择了所有信息后,我才能保存在数据库中)。 因此,我需要访问用户所做的所有选择,我想将其存储在函数外部的对象中,这样所有函数都可以使用它,但是如果同时发出多个请求(每个请求将覆盖另一个请求),此解决方案将不起作用

有没有办法为会话的每个实例保存状态


每个会话都有会话id吗?

您有
上下文。用户数据
是持久的会话,您可以使用它存储所有用户选择

e、 g


上下文用户数据的生命周期是什么?谈话结束后会清楚吗?如果用户再次进入同一个入口点,它会在那里吗?
query = update.callback_query
querydata = query.data
context.user_data["key"] = querydata