首页 > 解决方案 > 将用户 ID 存储在 json 文件中的问题

问题描述

所以我想做的是存储用户ID并在他们执行命令时添加他们的分数。但我得到的问题是用户被记录了两次并且它没有添加分数。这是 json 文件中发生的情况:

{"272356126391238536": {"experience": 1}, "272356126391238536": {"experience": 1}}

这是我定义更新和添加的代码的一部分:

async def update(amount, user):
   if not user.id in amount:
       amount[user.id] = {}
       amount[user.id]['experience'] = 0

async def add(amount, user, exp):
amount[user.id]['experience'] += exp

这是命令中分数更新的部分:

await update(buffer, ctx.message.author)
await add(buffer, ctx.message.author, 1)

当我将“.id”更改为“.name”时,它可以正常工作,但名称的问题是如果用户更改他的名字,他的旧分数将会丢失。

标签: python-3.xdiscorddiscord.py

解决方案


确保使用 ctx 变量,因此:

async def update(ctx, amount):
   if not str(ctx.message.author.id) in amount:
       amount[str(ctx.message.author.id)] = {}
       amount[str(ctx.message.author.id)]['experience'] = 0

async def add(amount, user : discord.Member, exp):
    amount[user.id]['experience'] += exp

这应该有效。


推荐阅读