0
我有一个messenger bot,以顺序的方式提问。为了跟踪我使用的计数器是会话变量的问题,但是当我增加会话[计数器]时,它不会改变。会话变量在增量时不会改变
这是逻辑。即使这段代码有效,但我不确定为什么当我为我的机器人实现相同的逻辑时,它不起作用。
question_dict = {
'Locq0':[{'question':"Some question 0",'options':(["Continue","@continue"])}],
'Locq1':[{'question':"Some question 1",'options':(["Continue","@continue"])}],
'Locq2':[{'question':"Some question 2",'options':(["Continue","@continue"])}],
}
def main():
session['counter'] = 0
if user_payload == "@continue":
increment()
def increment():
if session['counter'] <= len(question_dict):
session['counter'] += 1
quiz(session['counter'])
def quiz(counter):
question = question_dict['Locq{}'.format(counter)][0]['question']
option = question_dict['Locq{}'.format(counter)][0]['options']
# display the question and option
print(question)
print(option)
返回机器人。当用户第一次使用机器人时,将创建一个会话变量session['counter']
并将其初始化为0.然后,机器人开始提问,转到下一个问题,它应该增加session['counter'] +=1
。但是这并没有发生,即使调用了increment()函数,session['counter']
始终为0。
我做错了什么?或者有没有适当的方法来做到这一点?这个应用程序使用Flask。
谢谢!但是,这不是问题。当我在具有表单的Web应用程序中使用相同的逻辑时,它工作正常。 @Kalyan Reddy –
然后,可能你正在代码中的某处再次将会话计数器更新为0。尝试将会话字典更改为全局字典并让我知道 –
会话是一个烧录字典,计数器是会话变量。我开始使用会话,因为多处理器服务器无法跟踪全局数据。你可以按照这个问题在这里https://stackoverflow.com/questions/45795977/python3-incrementing-a-global-variable-causes-bot-to-randomize-responses-when @Kalyan Reddy –