#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
словаре.