У меня есть следующий скрипт,
for level in levels.keys():
name=levels[level]['name']
hoist=levels[level]['hoist']
colour=levels[level]['colour']
perms=levels[level]['permissions']
await guild.create_role(name=name,hoist=hoist,permissions=perms)
Я использую этот скрипт со следующим словарем,
levels={"Admin":{"name":"Admin","hoist":"1","colour":"red","permissions":"8"},"Moderator":{"name":"Moderator","hoist":"1","colour":"yellow","permissions":"1610079683"},"Henchman":{"name":"Henchman","hoist":"1","colour":"yellow","permissions":"470011072"},"Member":{"name":"Member","hoist":"0","colour":"green","permissions":"67226688"},"Verify":{"name":"Verify","hoist":"1","colour":"white","permissions":""},"Leach":{"name":"Leach","hoist":"1","colour":"pink","permissions":""}}
Когда я запускаю скрипт, я получаю следующую ошибку,
Ignoring exception in command setup:
Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/discord/ext/commands/core.py", line 83, in wrapped
ret = await coro(*args, **kwargs)
File "bot2.py", line 62, in setup
await guild.create_role(name=name,hoist=hoist,permissions=perms)
File "/usr/local/lib/python3.6/dist-packages/discord/guild.py", line 1576, in create_role
fields['permissions'] = perms.value
AttributeError: 'str' object has no attribute 'value'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/discord/ext/commands/bot.py", line 892, in invoke
await ctx.command.invoke(ctx)
File "/usr/local/lib/python3.6/dist-packages/discord/ext/commands/core.py", line 797, in invoke
await injected(*ctx.args, **ctx.kwargs)
File "/usr/local/lib/python3.6/dist-packages/discord/ext/commands/core.py", line 92, in wrapped
raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'str' object has no attribute 'value'
Я понимаю, что строка не имеет значения, а объект не имеет значения, но я не понимаю, почему, когда perms объявляется и указывается равным значению словаря, он думает, что это строка или объект. Особенно, когда я использую тот же синтаксис, что и приведенные выше рабочие значения.
Что меня больше смущает, так это то, что если я использую следующий скрипт,
for level in levels.keys():
perms=levels[level]['permissions']
print(perms)
, он отлично работает и выдает следующий вывод:
8
1610079683
470011072
67226688
Включая печать двух пустых значений. (Я попытался изменить их на значение, но все равно получаю ошибку.)
Любая помощь, идеи и т. Д. c. будет оценена.