python-3.x - 将用户 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”时,它可以正常工作,但名称的问题是如果用户更改他的名字,他的旧分数将会丢失。
解决方案
确保使用 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
这应该有效。
推荐阅读
- flutter - Flutter:使两个列表视图可滚动为一个
- javascript - 仅在一个特定页面上添加脚本(React)
- snowflake-cloud-data-platform - Snowflake 可以将整数表示的 IP 转换为字符串 IP 地址吗?
- git - 为什么我的 Git 合并中止并出现错误:您对以下文件的本地更改将被合并覆盖?
- c++ - 带向量数组的工资以获得员工总工资的总和
- php - 为什么显示相同的 24 个结果
- python - 对于少量长序列,python中最好的基于相似性的序列回归方法是什么?
- flutter - Flutter 选择页面转换器
- java - 为什么我在执行 doInBackground() 时出错
- com - 从聚合 COM 对象到聚合对象的 QueryInterface 调用是否需要特殊处理?