discord.py如何一次为所有用户添加一个新的json密钥



我有一个discord bot,它将用户信息保存在一个json文件中,如下所示:https://i.stack.imgur.com/eh12z.jpg

因此,我需要向所有用户添加一个新的json密钥(name="House", value=False)。我以前尝试过json.dump(house, json_file)机器人不工作。

重要信息:我有以下功能:

要打开一个新的json帐户:

async def open_account(user):
users = await get_bank_data()
if str(user.id) in users:
house = users[str(user.id)]['House'] = False
with open("main.json", 'w') as f:
f.write(json.dumps(house))
return False
else:
users[str(user.id)] = {}
users[str(user.id)]["wallet"] = 0
users[str(user.id)]["bank"] = 0
users[str(user.id)]["House"] = False

读取json文件:

async def get_bank_data():
with open("main.json", "r") as f:
users = json.load(f)
return users

其他信息:user值为ctx.author

您可以编写一个1次方法,在该方法中循环json中的所有用户以添加新字段,类似于以下内容:

async def open_account(user):
users = await get_bank_data()
for user in users:
house = user['House'] = False

with open("main.json", 'w') as f:
f.write(json.dumps(house))

如果你想为服务器中的每个用户添加字段,你可以循环所有成员添加到json中,如下所示:

users = await get_bank_data()
async for member in guild.fetch_members():
house = users[str(member.id)]['House'] = False

with open("main.json", 'w') as f:
f.write(json.dumps(house))

只需在本地运行此脚本即可添加;"房子";main.json文件中每个用户的密钥

with open("main.json", "r") as f:
bank_data = json.load(f)
# scroll through every user
for key in bank_data.keys():
# If there is no "House" key for a user
if bank_data[key].get("House") is None:
# Add the key
bank_data[key]["House"] = False
# Save the json
with open("main.json", 'w') as f:
f.write(json.dumps(bank_data))

Btwget_bank_data不需要是async函数,因为它不使用任何异步函数

最新更新