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 –