我遇到一个问题,我的 JSON 文件在一段时间后在文件末尾添加了另一个括号,这使得leaderbord 命令无法读取该文件。
这是我的代码:
dict = Counter()
@commands.command()
async def cupcake(self, ctx):
id = str(user.id)
if id in dict:
dict[user.id] += 1
else:
dict[user.id] += 1
with open('users.json', 'r+') as f:
json.dump(dict, f)
然后,我运行排行榜命令。
@commands.command(pass_context=True)
async def top(self, ctx):
with open('users.json', 'r') as fg:
data = json.load(fg)
top_cakes = {k: v for k, v in sorted(data.items(), key=lambda item: item[1], reverse=True)}
names = ''
for postion, user in enumerate(top_cakes):
names += f'<@!{user}> has {top_cakes[user]}\n'
embed = discord.Embed(title="Cupcake top", color=0xF9CF7A)
embed.add_field(name="Top bakers:", value=names, inline=False)
await ctx.send(embed=embed)
这是 JSON 文件:(我已替换了实际的用户 ID)
{"USERID": 3, "USERID": 2}
这是几次获得积分后会发生的情况:
{"USERID": 1} "USERID": 2}
我无法确定它何时发生,它似乎完全是随机的。经过几次获得积分后,它会在名字上添加另一个括号。我不知道该怎么做或如何解决它。
冉冉说
相关分类