【问题标题】:My economy system isn't working, and I can't identify an error我的经济系统不工作,我无法识别错误
【发布时间】:2021-03-09 15:53:24
【问题描述】:

我一直在尝试在 discord.py 中创建一个经济系统。但是,该系统无法正常工作。每当我输入 !balance 命令时,它根本不会发送嵌入。它甚至没有给出错误。这是我的代码:

@client.command()
async def balance(ctx):
  user = ctx.author
  await open_account(ctx.author)

  users = await get_bank_data()



  wallet_amt = users[str(user.id)]["wallet"]
  bank_amt = users[str(user.id)]["bank"]

  embed=discord.Embed(title=f"{ctx.author.name}'s Balance")
  embed.add_field(name="Wallet:", value=wallet_amt, inline=False)
  embed.add_field(name="Bank:", value=bank_amt, inline=False)

  await ctx.send(embed=embed)

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)
    return True

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

谁能帮我找出错误?我对 discord.py 很陌生

【问题讨论】:

  • bank.json里面有内容吗?

标签: python discord discord.py discord.py-rewrite


【解决方案1】:

即使if 条件通过,您的open_account() 函数的逻辑也将始终返回True,因为缩进被取消。如果它与您检索数据的方式相关,这可能是您的问题。

【讨论】:

    【解决方案2】:
    @client.command(aliases=['bal'])
    async def balance(ctx):
        await open_account(ctx.author)
        user = ctx.author
    
        users = await get_bank_data()
    
        wallet_amt = users[str(user.id)]["wallet"]
        bank_amt = users[str(user.id)]["bank"]
    
        em = discord.Embed(title=f'{ctx.author.name} Balance',color = discord.Color.red())
    
        em.add_field(name="Wallet Balance", value=wallet_amt)
        em.add_field(name='Bank Balance',value=bank_amt)
        await ctx.send(embed= em)
    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('mainbank.json','w') as f:
            json.dump(users,f)
    
        return True
    async def get_bank_data():
        with open('mainbank.json','r') as f:
            users = json.load(f)
    
        return users
    

    这应该可以将 json 文件名更改为正确的文件名, 一件重要的事情,也要检查你的保存功能和文件内容

    【讨论】:

    • 虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。
    猜你喜欢
    • 2017-10-14
    • 1970-01-01
    • 2021-05-25
    • 2022-06-13
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多