Discord.py Экономическая команда - PullRequest
0 голосов
/ 04 августа 2020

Я делаю команду экономии для своего бота. Я считаю, что ошибка заключается в функции open_account(). Когда вы запускаете команду баланса, она видит, что у меня нет учетной записи, и записывает в файл JSON как следует, но не отправляет вставку. Я проверил вставку, все работает нормально. Это что-то перед вызовом встраивания. Кроме того, команда begin не добавляет сумму, которую вы зарабатываете, в файл JSON. Я потратил дни, безуспешно пытаясь понять, в чем проблема. Кто-нибудь может помочь мне разобраться, где я напортачил?

@client.command()
async def balance(ctx):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="{}s balance:".format(member.name), color=0xe20303)
    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


@client.command()
async def beg(ctx):

    users = await get_bank_data()
    user = ctx.author
    earnings = random.randrange(2000)

    if earnings == 0:
        await ctx.send(f"How unlucky... You didn't get anything...")

    elif earnings > 50:
        await ctx.send(f"Nice you got ${earnings} from a cool dude")

    elif earnings > 100:
        await ctx.send(f"Someone felt nice and gave you ${earnings}")

    elif earnings > 500:
        await ctx.send(f"You seem to have a way with people! Someone gave you ${earnings}")

    elif earnings > 800:
        await ctx.send(f"What a lucky day!! Someone gave you ${earnings}")

    elif earnings > 1500:
        await ctx.send(f"A rich man passed by you and felt bad. So ha gave you ${earnings}")

    elif earnings > 2000:
        await ctx.send(f"A shady man walked up to you and said 'I know how tough it can be out here' before giving you ${earnings}")


    users[srt(user.id)]["wallet"] += earnings

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

1 Ответ

0 голосов
/ 04 августа 2020

Функции open_account и get_bank_data не являются асинхронными функциями. Попробуйте убрать перед ними async / await.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...