python - 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文件。但是之后任何使用它的人,它都不起作用。请帮我解决这个问题。
解决方案
您需要做的是每次创建新用户时更新 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)
推荐阅读
- pattern-matching - SpaCy:匹配文档的一部分
- list - how to delete item list using pop up menu - flutter
- python - 这段代码有什么问题,为什么这段代码的损失没有减少?
- cxf - 设置 LoggingOutInterceptor 无记录器限制
- java - JSoup 按 id 提取文本
- c# - 实体框架数据库集
.Where(e => true) 性能 - flutter - webview_flutter target _blank is not working
- regex - 正则表达式,用破折号、空格和前导数字掩盖信用卡的最后 4 位以外的所有数字
- performance - 从 loadrunner 中的步骤工具箱添加 web_reg_save_param_ex 时出错
- java - java 8 sum field from list of object with common multiple fields