目前我正在使用这个库PyMessenger构建一个Facebook Messenger机器人,我遇到了一个奇怪的行为。
我的愚蠢机器人的目的是在每次用户编写消息时简单地将数字1附加到列表中,然后返回列表的长度。
我的问题是返回的值是错误的。僵尸程序就好像它有两个不同的列表供同一个用户使用。例如,在写入一条消息后,输出应为1,写入第二条消息后输出应为2.现在,有时在我写第三条消息后输出为1而不是3.在下一次输入之后,机器人的输出可以是3(第一个'列表的长度)或2('第二个'列表的长度)。我知道我的解释不是最好的,所以如果您需要更多细节,请告诉我。
僵尸程序部署在免费的Heroku实例上。
如果我的整个脚本附加到这篇文章,并且机器人的图片显示了一个例子。
import os
from pymessenger.bot import Bot
from collections import defaultdict
import requests
from flask import Flask, request
app = Flask(__name__)
ACCESS_TOKEN = os.environ.get('PAGE_ACCESS_TOKEN')
bot = Bot(ACCESS_TOKEN)
a = defaultdict(list)
@app.route("/", methods=['POST', 'GET'])
def webhook():
if request.method == 'POST':
output = request.get_json()
for event in output['entry']:
messaging = event['messaging']
for x in messaging:
if x.get('message'):
recipient_id = x['sender']['id']
a[recipient_id].append(1)
bot.send_text_message(recipient_id, len(a[recipient_id]))
return 'Success'
if __name__ == '__main__':
app.run(debug=True)