я получаю KeyError: '563690668808208423', когда пытаюсь добавить опыт пользователю - PullRequest
2 голосов
/ 01 августа 2020

я получаю KeyError: '563690668808208423', я пытаюсь добавить exp пользователю, когда пользователь использует команду

@bot.command(pass_context=True)
async def work(ctx):
    with open('data.json','r+', encoding = 'utf-8') as f:
        kingdom = json.load(f)

    if str(kingdom[str(ctx.author.id)]['job']) == "Cleaner":
        await add_experience(kingdom, ctx.author ,10)
        await ctx.send('Вы отлично поработали')
async def add_experience(users, user, exp):
    users[user.id]['experience'] += exp

Я использую json файл в качестве базы данных:

{"563690668808208423": {"experience": 0, "level": 1, "job": "Cleaner"},
"517371726720532511": {"experience": 0, "level": 1, "job": "Cleaner"}}

563690668808208423 это мой ID

1 Ответ

2 голосов
/ 01 августа 2020

Вы должны просто изменить его на следующее:

async def add_experience(users, user, exp):
    users[str(user.id)]['experience'] += exp

Идентификатор, возвращаемый пользователем, который является идентификатором пользователя , возвращается как int (целое число), поэтому вам нужно сначала измените его на строку

...