首页 > 解决方案 > Discord.py 货币机器人;创建银行帐户命令仅适用于使用该命令的第一人。怎么修?

问题描述

@client.event
async def on_message(message):
  if message.content.lower().startswith('.enroll'):
    dent = message.author.id
    bcall = message.author.display_name

    fart ={
    f"{dent}": [
    {
      "cash": 0,
      "bank": 0
    }
    ]
    }

    json_object = json.dumps(fart, indent = 3)

    with open("bank.json", "w") as outfile: 
      outfile.write(json_object)

    ebank = discord.Embed(title=f"{bcall}'s Enrollment", color=random.choice(colours))
    ebank.set_author(name='Eisendrache', icon_url='https://media.discordapp.net/attachments/803648238497824839/816356860369961021/eisendrache.png')
    ebank.add_field(name="User ID", value=dent, inline=False)
    ebank.add_field(name="Cash", value="0 :money_with_wings:", inline=False)
    ebank.add_field(name="Bank", value="0 :money_with_wings:", inline=False)
    ebank.set_image(url="https://media.discordapp.net/attachments/817048944022257744/817993420366282772/BOT_BANK.jpeg")
    ebank.set_footer(text=f'Eisendrache • {(timestamp)}', icon_url='https://media.discordapp.net/attachments/803648238497824839/816356860369961021/eisendrache.png')
    await message.channel.send(embed=ebank)

JSON文件:

{
   "799335941160173609": [
      {
         "cash": 0,
         "bank": 0
      }
   ]
}

所以当我使用命令时,第一个人的信息进入了json文件。但是之后任何使用它的人,它都不起作用。请帮我解决这个问题。

标签: pythondiscord.py

解决方案


您需要做的是每次创建新用户时更新 json 文件。如果您创建一个新字典并将其写入文件。旧数据将被删除。

async def on_message(message):
  #other stuff
  with open('bank.json', 'r') as f:
       bank_details = json.load(f) #use better names than fart
  if str(message.author.id) in bank_details:
       #user already exists
  else:
      #create new user
      bank_details[str(message.author.id)] = {} #details here
  with open('bank.json', 'w') as f:
      json.dump(bank_details, f, indent=3)

推荐阅读