【发布时间】:2019-06-02 14:09:36
【问题描述】:
这是我正在尝试开始工作的 python discord 机器人。有一个名为 users.json 的单独文件保存数据,但用户 ID、体验和级别不会更新而是重复添加。
尝试打印出它在几个点比较的 ID,它们都显示相同的 id。 从头开始几次,但同样的持续问题。
@client.event
async def on_message(message):
with open('users.json', 'r') as g:
users = json.load(g)
await update_data(users, message.author)
await add_experience(users, message.author, 5)
await level_up(users, message.author, message.channel)
with open('users.json', 'w') as f:
json.dump(users, f)
async def update_data(users, user):
if not user.id in users:
users[user.id] = {}
users[user.id]['experience'] = 0
users[user.id]['level'] = 1
以及 users.json 中的结果:
{"162634647XXXXXXXXX": {"experience": 5, "level": 1}}
预期结果:数据(经验、等级)得到更新 实际结果:相同的数据放入两次
【问题讨论】:
-
一种旁注:你在 every 消息上加载你的数据库(json)?可能是逻辑问题,使用
not in而不是not x in -
@TheIncorrigible1 是的,它确实会加载到每条消息上,尝试过
not x in和not in,两者都不起作用 -
复制发生在哪里?当您尝试在 JSON 中使用重复键时,您不会收到错误吗?
-
@TheIncorrigible1 它确实给了我一个错误
[json] duplicate object key。它像这样复制相同的字符串:{"162634647XXXXXXXXX": {"experience": 5, "level": 1}}两次,然后由于重复而停止 -
是否可以同时处理多条消息?