Моя экономическая система не работает, и я не могу определить ошибку

#python #discord #discord.py #discord.py-rewrite

#python #Discord #discord.py #discord.py-переписать

Вопрос:

Я пытался создать экономическую систему в discord.py . Однако система вообще не работает. Всякий раз, когда я набираю!команда баланса вообще не отправляет embed. Он даже не выдает ошибку. Вот мой код:

 @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

Комментарии:

1. Есть ли в файле bank.json какое-либо содержимое?

Ответ №1:

Логика вашей open_account() функции всегда будет возвращать значение True, даже если if условие выполнено, потому что отступ отменен. Если это связано с тем, как вы извлекаете данные, это может быть вашей проблемой.

Ответ №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 на правильное,
одна важная вещь, проверьте ваши функции сохранения и содержимое файла тоже

Комментарии:

1. Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, как и / или почему он решает проблему, улучшит долгосрочную ценность ответа.