首页 > 解决方案 > 您好.. 我正在尝试建立一个升级系统,我在终端中没有收到任何错误,但 json 数据没有更新

问题描述

这是我的代码,正如我在终端中所说的那样,没有错误,但是,json 文件不会更新,是的,我的 json 文件以 {} 开头,我没有给出完整的代码,但只有必要的代码来检查..

@client.event
async def on_member_join(member):
  with open("users.json", "r") as f:
    json.load(f)
    users = await update_data(users, member)
  with open("users.json", "w") as f:
      json.dump(users, f)

@client.event
async def on_message(message):
  with open("users.json", "r") as f:
   users = json.load(f)
  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

async def add_experience(users, user, exp):
  users [user.id]["experience"] += exp

async def level_up(users , user , channel):
  experience = users[user.id]['experience']
  lvl_start = users[user.id]['level']
  lvl_end = int(experience ** (1/4))
  
  if lvl_start < lvl_end:
    await ctx.send(channel , '{} has leveled up to level {}'.format(user.mention , lvl_end))
    users[str(user.id)]["level"] = lvl_end
  
  with open("users.json","w") as f:
    json.dump(users , f)

标签: pythonjsondiscord.py

解决方案


async def on_member_join(member):
  with open("users.json", "r") as f:
    json.load(f)

这会加载您的 JSON 文件并将结果扔到地板上。你自找的:

async def on_member_join(member):
  with open("users.json", "r") as f:
    users = json.load(f)

您可能会考虑编写“read_config”和“write_config”例程来封装它,以避免错误。


推荐阅读