@AdvoKappa

Discord.ext.commands.errors.CommandInvokeError: Command raised an exception: KeyError: '293396418834464768', что делать?

@bot.command(pass_context = True)
async def Test(ctx):
    if 'coins' > 'coinss':
        coins = users[str(user.id)]['coins']
        coinss = users[str(user.id)]['coinss']

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

    await add_coins(users, ctx.author, 50000)
    await coinss(users, ctx.author)

    with open('users.json','w') as f:
        json.dump(users, f)

async def add_coins(users, user, coin):
    users[str(user.id)]['coins'] += coin

async def coinss(users, user):
    users[str(user.id)]['15000']

Ошибка такова:
Ignoring exception in command Test:
Traceback (most recent call last):
  File "C:\Users\stas\AppData\Local\Programs\Python\Python38-32\lib\site-packages\discord\ext\commands\core.py", line 83, in wrapped
    ret = await coro(*args, **kwargs)
  File "save.py", line 26, in Test
    await add_coins(users, ctx.author, 50000)
  File "save.py", line 33, in add_coins
    users[str(user.id)]['coins'] += coin
KeyError: '293396418834464768'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\stas\AppData\Local\Programs\Python\Python38-32\lib\site-packages\discord\ext\commands\bot.py", line 892, in invoke
    await ctx.command.invoke(ctx)
  File "C:\Users\stas\AppData\Local\Programs\Python\Python38-32\lib\site-packages\discord\ext\commands\core.py", line 797, in invoke
    await injected(*ctx.args, **ctx.kwargs)
  File "C:\Users\stas\AppData\Local\Programs\Python\Python38-32\lib\site-packages\discord\ext\commands\core.py", line 92, in wrapped
    raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: KeyError: '293396418834464768'
  • Вопрос задан
  • 1374 просмотра
Решения вопроса 1
Ошибка KeyError означает что указанного ключа в указанном словаре не существует.

Что делать?

Обновить словарь, добавив необходимый ключ если его не существует:
async def add_coins(users, user, coin):
    if str(user.id) not in users:
        users[str(user.id)]['coins'] = 0
    users[str(user.id)]['coins'] += coin
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект
18 апр. 2024, в 21:56
2000 руб./за проект