Discord перезапись Python — ошибка ключа JSON

#python #json #discord.py-rewrite

#python #json #discord.py-перезапись

Вопрос:

Я хочу создать систему разрешений с использованием JSON, но когда я пытаюсь выполнить код и набираю что-то в чате, он возникает KeyError: 694446165197979670 .

Мой код:

 @client.event
async def on_message(message):
    if message.author.bot == True:
        pass
    else:
        with open('./perms.json', 'r') as f:
            perms = json.load(f)
        if message.author.id in perms:
            pass
        else:
            with open('./perms.json', 'r') as f:
                perms = json.load(f)
            perms[message.author.id]["owner"] = False
            perms[message.author.id]["admin"] = False
            with open('./perms.json', 'w') as f:
                json.dump(perms, f, sort_keys=True, ensure_ascii=False, indent=4)
 

Я почти уверен, что это правильно.

Полное сообщение об ошибке:

 Ignoring exception in on_message
Traceback (most recent call last):
  File "C:UsersIdeapadAppDataLocalPackagesPythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0LocalCachelocal-packagesPython39site-packagesdiscordclient.py", line 333, in _run_event
    await coro(*args, **kwargs)
  File "C:UsersIdeapadDesktopKAP-RevampProcfilenew.py", line 197, in on_message
    perms[message.author.id]["owner"] = False
KeyError: 694446165197979670
 

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

1. Предположительно '694446165197979670' , это не ключ perms . Мы не можем сказать вам, почему и должно ли это быть или нет.

2. Обратите внимание, что вы используете как message.author.id прямое, так и его строковое представление в качестве ключа perms . Вероятно, это должен быть только один из них.

3. @mkrieger1 что такое?

4. и да, '694446165197979670' это не ключ.

5. Я имею в виду, что целое 694446165197979670 число — это нечто иное, чем строка '694446165197979670' , и ваша программа не согласуется с тем, какой из двух он использует в качестве ключа в perms словаре.