Python Work命令不会向用户';钱包
我正在执行一个有效的命令,当我尝试它时,bot不会在控制台中执行任何操作,也不会说错误。我怎样才能让它工作?我还在下面定义了Python Work命令不会向用户';钱包,python,discord,discord.py,Python,Discord,Discord.py,我正在执行一个有效的命令,当我尝试它时,bot不会在控制台中执行任何操作,也不会说错误。我怎样才能让它工作?我还在下面定义了open_账户 async def open_account(user): users = await get_bank_data() if str(user.id) in users: return False else: users[str(user.id)] = {} users[str(user.id)]["walle
open_账户
async def open_account(user):
users = await get_bank_data()
if str(user.id) in users:
return False
else:
users[str(user.id)] = {}
users[str(user.id)]["wallet"] = 0
users[str(user.id)]["bank"] = 0
with open("bank.json", "w") as f:
json.dump(users, f, indent=4)
return True
我的获取银行数据代码
async def get_bank_data():
with open("bank.json", "r") as f:
users = json.load(f)
return users
async def update_bank(user, change=0, mode="wallet"):
users = await get_bank_data()
users[str(user.id)][mode] += change
with open("bank.json", "w") as f:
json.dump(users, f, indent=4)
bal = [users[str(user.id)]["wallet"], users[str(user.id)]["bank"]]
return bal
我的工作指挥部
@bot.command()
async def work(ctx):
member = ctx.author
await open_account(member)
users = await get_bank_data()
user = member
money = random.randrange(0, 30)
users[str(user.id)]["wallet"] += money
with open("bank.json") as f:
json.dump(users, f, indent=4)
embed=discord.Embed(title="Work", description=f"{ctx.author.name} went to work!", color=0x00FFFF)
embed.add_field(name="You Earned:", value=f"{money} Ulti Coins", inline=False)
embed.set_thumbnail(url=user.avatar_url)
embed.set_footer(text="Your total amount is saved across all servers that I'm in!")
await ctx.send(embed=embed)
您的错误是打开了JSON文件,但在第3步之后(在我的例子中,
print
函数)什么也没有发生。
这是因为您没有向JSON文件写入任何内容
您可以使用以下功能修复此错误:
以open(“bank.json”,“w”)作为f:#w用于编写
json.dump(用户,f)
完整/新代码可以是:
@client.command()
异步def工作(ctx):
成员=ctx.author
等待开户(会员)
打印(“开户”)
用户=等待获取银行数据()
用户=成员
money=random.randrange(0,30)
打印(f“所选金额{货币}”)
用户[str(user.id)][“钱包”]+=money
印刷(“功能作品”)
将open(“bank.json”,“w”)作为f:#在此处更改
json.dump(用户,f)
打印(“更新工作”)
embed=discord.embed(title=“Work”,description=f“{ctx.author.name}开始工作了!”,color=0x00FFFF)
embed.add_字段(name=“youreanded:”,value=f“{money}多枚硬币”,inline=False)
嵌入.set_缩略图(url=user.avatar_url)
embed.set_footer(text=“我所在的所有服务器都保存了您的总金额!”)
等待ctx.send(嵌入=嵌入)
- 下次您可以在
中构建以实际查看错误发生的位置时,这是一个接近错误的好方法print
获取银行数据
?@Dominik我编辑了代码以便您可以查看。