Discord.js DiscordAPIError: Invalid Form Body 0.permissions: Must be 10 or fewer in length
Discord.js DiscordAPIError: Invalid Form Body 0.permissions: Must be 10 or fewer in length
我打算 运行 我的机器人在比测试服务器更大的服务器上,在我向更大的服务器重新注册斜杠命令后,错误输出:
/home/runner/UnfortunateDistortedEngine/node_modules/discord.js/src/rest/RequestHandler.js:349
throw new DiscordAPIError(data, res.status, request);
^
DiscordAPIError: Invalid Form Body
0.permissions: Must be 10 or fewer in length.
1.permissions: Must be 10 or fewer in length.
2.permissions: Must be 10 or fewer in length.
3.permissions: Must be 10 or fewer in length.
4.permissions: Must be 10 or fewer in length.
5.permissions: Must be 10 or fewer in length.
6.permissions: Must be 10 or fewer in length.
7.permissions: Must be 10 or fewer in length.
8.permissions: Must be 10 or fewer in length.
9.permissions: Must be 10 or fewer in length.
10.permissions: Must be 10 or fewer in length.
at RequestHandler.execute (/home/runner/UnfortunateDistortedEngine/node_modules/discord.js/src/rest/RequestHandler.js:349:13)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async RequestHandler.push (/home/runner/UnfortunateDistortedEngine/node_modules/discord.js/src/rest/RequestHandler.js:50:14) {
method: 'put',
path: '/applications/873528943758692352/guilds/836212492769165363/commands/permissions',
code: 50035,
httpStatus: 400,
requestData: {
json: [
{
id: '914601275201576970',
permissions: [
{ id: '836215354602029076', permission: true, type: 1 },
{ id: '870019089488298105', permission: true, type: 1 },
{ id: '859507507596230736', permission: true, type: 1 },
{ id: '875303313560727552', permission: true, type: 1 },
{ id: '875302171128770601', permission: true, type: 1 },
{ id: '859471924753072188', permission: true, type: 1 },
{ id: '863650251478007818', permission: true, type: 1 },
{ id: '885136706330832926', permission: true, type: 1 },
{ id: '881465412112498689', permission: true, type: 1 },
{ id: '836215269243486239', permission: true, type: 1 },
{ id: '859878718599987200', permission: true, type: 1 },
{ id: '836214626923315221', permission: true, type: 1 },
{ id: '836214627243262002', permission: true, type: 1 },
{ id: '860251609812172820', permission: true, type: 1 },
{ id: '836214626617655296', permission: true, type: 1 },
{ id: '869931180236083230', permission: true, type: 1 },
{ id: '859888824242798612', permission: true, type: 1 }
]
},
{
id: '914601275201576971',
permissions: [
{ id: '836215354602029076', permission: true, type: 1 },
{ id: '870019089488298105', permission: true, type: 1 },
{ id: '859507507596230736', permission: true, type: 1 },
{ id: '875303313560727552', permission: true, type: 1 },
{ id: '875302171128770601', permission: true, type: 1 },
{ id: '859471924753072188', permission: true, type: 1 },
{ id: '863650251478007818', permission: true, type: 1 },
{ id: '885136706330832926', permission: true, type: 1 },
{ id: '881465412112498689', permission: true, type: 1 },
{ id: '836215269243486239', permission: true, type: 1 },
{ id: '859878718599987200', permission: true, type: 1 },
{ id: '836214626923315221', permission: true, type: 1 },
{ id: '836214627243262002', permission: true, type: 1 },
{ id: '860251609812172820', permission: true, type: 1 },
{ id: '836214626617655296', permission: true, type: 1 },
{ id: '869931180236083230', permission: true, type: 1 },
{ id: '859888824242798612', permission: true, type: 1 }
]
},
{
id: '914601275201576972',
permissions: [
{ id: '836215354602029076', permission: true, type: 1 },
{ id: '870019089488298105', permission: true, type: 1 },
{ id: '859507507596230736', permission: true, type: 1 },
{ id: '875303313560727552', permission: true, type: 1 },
{ id: '875302171128770601', permission: true, type: 1 },
{ id: '859471924753072188', permission: true, type: 1 },
{ id: '863650251478007818', permission: true, type: 1 },
{ id: '885136706330832926', permission: true, type: 1 },
{ id: '881465412112498689', permission: true, type: 1 },
{ id: '836215269243486239', permission: true, type: 1 },
{ id: '859878718599987200', permission: true, type: 1 },
{ id: '836214626923315221', permission: true, type: 1 },
{ id: '836214627243262002', permission: true, type: 1 },
{ id: '860251609812172820', permission: true, type: 1 },
{ id: '836214626617655296', permission: true, type: 1 },
{ id: '869931180236083230', permission: true, type: 1 },
{ id: '859888824242798612', permission: true, type: 1 }
]
},
{
id: '914601275201576973',
permissions: [
{ id: '836215354602029076', permission: true, type: 1 },
{ id: '870019089488298105', permission: true, type: 1 },
{ id: '859507507596230736', permission: true, type: 1 },
{ id: '875303313560727552', permission: true, type: 1 },
{ id: '875302171128770601', permission: true, type: 1 },
{ id: '859471924753072188', permission: true, type: 1 },
{ id: '863650251478007818', permission: true, type: 1 },
{ id: '885136706330832926', permission: true, type: 1 },
{ id: '881465412112498689', permission: true, type: 1 },
{ id: '836215269243486239', permission: true, type: 1 },
{ id: '859878718599987200', permission: true, type: 1 },
{ id: '836214626923315221', permission: true, type: 1 },
{ id: '836214627243262002', permission: true, type: 1 },
{ id: '860251609812172820', permission: true, type: 1 },
{ id: '836214626617655296', permission: true, type: 1 },
{ id: '869931180236083230', permission: true, type: 1 },
{ id: '859888824242798612', permission: true, type: 1 }
]
},
{
id: '914601275201576974',
permissions: [
{ id: '836215354602029076', permission: true, type: 1 },
{ id: '870019089488298105', permission: true, type: 1 },
{ id: '859507507596230736', permission: true, type: 1 },
{ id: '875303313560727552', permission: true, type: 1 },
{ id: '875302171128770601', permission: true, type: 1 },
{ id: '859471924753072188', permission: true, type: 1 },
{ id: '863650251478007818', permission: true, type: 1 },
{ id: '885136706330832926', permission: true, type: 1 },
{ id: '881465412112498689', permission: true, type: 1 },
{ id: '836215269243486239', permission: true, type: 1 },
{ id: '859878718599987200', permission: true, type: 1 },
{ id: '836214626923315221', permission: true, type: 1 },
{ id: '836214627243262002', permission: true, type: 1 },
{ id: '860251609812172820', permission: true, type: 1 },
{ id: '836214626617655296', permission: true, type: 1 },
{ id: '869931180236083230', permission: true, type: 1 },
{ id: '859888824242798612', permission: true, type: 1 }
]
},
{
id: '914601275201576975',
permissions: [
{ id: '836215354602029076', permission: true, type: 1 },
{ id: '870019089488298105', permission: true, type: 1 },
{ id: '859507507596230736', permission: true, type: 1 },
{ id: '875303313560727552', permission: true, type: 1 },
{ id: '875302171128770601', permission: true, type: 1 },
{ id: '859471924753072188', permission: true, type: 1 },
{ id: '863650251478007818', permission: true, type: 1 },
{ id: '885136706330832926', permission: true, type: 1 },
{ id: '881465412112498689', permission: true, type: 1 },
{ id: '836215269243486239', permission: true, type: 1 },
{ id: '859878718599987200', permission: true, type: 1 },
{ id: '836214626923315221', permission: true, type: 1 },
{ id: '836214627243262002', permission: true, type: 1 },
{ id: '860251609812172820', permission: true, type: 1 },
{ id: '836214626617655296', permission: true, type: 1 },
{ id: '869931180236083230', permission: true, type: 1 },
{ id: '859888824242798612', permission: true, type: 1 }
]
},
{
id: '914601275201576976',
permissions: [
{ id: '836215354602029076', permission: true, type: 1 },
{ id: '870019089488298105', permission: true, type: 1 },
{ id: '859507507596230736', permission: true, type: 1 },
{ id: '875303313560727552', permission: true, type: 1 },
{ id: '875302171128770601', permission: true, type: 1 },
{ id: '859471924753072188', permission: true, type: 1 },
{ id: '863650251478007818', permission: true, type: 1 },
{ id: '885136706330832926', permission: true, type: 1 },
{ id: '881465412112498689', permission: true, type: 1 },
{ id: '836215269243486239', permission: true, type: 1 },
{ id: '859878718599987200', permission: true, type: 1 },
{ id: '836214626923315221', permission: true, type: 1 },
{ id: '836214627243262002', permission: true, type: 1 },
{ id: '860251609812172820', permission: true, type: 1 },
{ id: '836214626617655296', permission: true, type: 1 },
{ id: '869931180236083230', permission: true, type: 1 },
{ id: '859888824242798612', permission: true, type: 1 }
]
},
{
id: '914601275201576977',
permissions: [
{ id: '836215354602029076', permission: true, type: 1 },
{ id: '870019089488298105', permission: true, type: 1 },
{ id: '859507507596230736', permission: true, type: 1 },
{ id: '875303313560727552', permission: true, type: 1 },
{ id: '875302171128770601', permission: true, type: 1 },
{ id: '859471924753072188', permission: true, type: 1 },
{ id: '863650251478007818', permission: true, type: 1 },
{ id: '885136706330832926', permission: true, type: 1 },
{ id: '881465412112498689', permission: true, type: 1 },
{ id: '836215269243486239', permission: true, type: 1 },
{ id: '859878718599987200', permission: true, type: 1 },
{ id: '836214626923315221', permission: true, type: 1 },
{ id: '836214627243262002', permission: true, type: 1 },
{ id: '860251609812172820', permission: true, type: 1 },
{ id: '836214626617655296', permission: true, type: 1 },
{ id: '869931180236083230', permission: true, type: 1 },
{ id: '859888824242798612', permission: true, type: 1 }
]
},
{
id: '914601275201576978',
permissions: [
{ id: '836215354602029076', permission: true, type: 1 },
{ id: '870019089488298105', permission: true, type: 1 },
{ id: '859507507596230736', permission: true, type: 1 },
{ id: '875303313560727552', permission: true, type: 1 },
{ id: '875302171128770601', permission: true, type: 1 },
{ id: '859471924753072188', permission: true, type: 1 },
{ id: '863650251478007818', permission: true, type: 1 },
{ id: '885136706330832926', permission: true, type: 1 },
{ id: '881465412112498689', permission: true, type: 1 },
{ id: '836215269243486239', permission: true, type: 1 },
{ id: '859878718599987200', permission: true, type: 1 },
{ id: '836214626923315221', permission: true, type: 1 },
{ id: '836214627243262002', permission: true, type: 1 },
{ id: '860251609812172820', permission: true, type: 1 },
{ id: '836214626617655296', permission: true, type: 1 },
{ id: '869931180236083230', permission: true, type: 1 },
{ id: '859888824242798612', permission: true, type: 1 }
]
},
{
id: '914601275201576979',
permissions: [
{ id: '836215354602029076', permission: true, type: 1 },
{ id: '870019089488298105', permission: true, type: 1 },
{ id: '859507507596230736', permission: true, type: 1 },
{ id: '875303313560727552', permission: true, type: 1 },
{ id: '875302171128770601', permission: true, type: 1 },
{ id: '859471924753072188', permission: true, type: 1 },
{ id: '863650251478007818', permission: true, type: 1 },
{ id: '885136706330832926', permission: true, type: 1 },
{ id: '881465412112498689', permission: true, type: 1 },
{ id: '836215269243486239', permission: true, type: 1 },
{ id: '859878718599987200', permission: true, type: 1 },
{ id: '836214626923315221', permission: true, type: 1 },
{ id: '836214627243262002', permission: true, type: 1 },
{ id: '860251609812172820', permission: true, type: 1 },
{ id: '836214626617655296', permission: true, type: 1 },
{ id: '869931180236083230', permission: true, type: 1 },
{ id: '859888824242798612', permission: true, type: 1 }
]
},
{
id: '914601275298029588',
permissions: [
{ id: '836215354602029076', permission: true, type: 1 },
{ id: '870019089488298105', permission: true, type: 1 },
{ id: '859507507596230736', permission: true, type: 1 },
{ id: '875303313560727552', permission: true, type: 1 },
{ id: '875302171128770601', permission: true, type: 1 },
{ id: '859471924753072188', permission: true, type: 1 },
{ id: '863650251478007818', permission: true, type: 1 },
{ id: '885136706330832926', permission: true, type: 1 },
{ id: '881465412112498689', permission: true, type: 1 },
{ id: '836215269243486239', permission: true, type: 1 },
{ id: '859878718599987200', permission: true, type: 1 },
{ id: '836214626923315221', permission: true, type: 1 },
{ id: '836214627243262002', permission: true, type: 1 },
{ id: '860251609812172820', permission: true, type: 1 },
{ id: '836214626617655296', permission: true, type: 1 },
{ id: '869931180236083230', permission: true, type: 1 },
{ id: '859888824242798612', permission: true, type: 1 }
]
},
{
id: '914601275298029589',
permissions: [
{ id: '836215354602029076', permission: true, type: 1 },
{ id: '859878718599987200', permission: true, type: 1 },
{ id: '836214626923315221', permission: true, type: 1 },
{ id: '836214627243262002', permission: true, type: 1 },
{ id: '869931180236083230', permission: true, type: 1 }
]
},
{
id: '914601275298029590',
permissions: [
{ id: '836215354602029076', permission: true, type: 1 },
{ id: '859878718599987200', permission: true, type: 1 },
{ id: '836214626923315221', permission: true, type: 1 },
{ id: '836214627243262002', permission: true, type: 1 },
{ id: '869931180236083230', permission: true, type: 1 }
]
},
{
id: '914601275298029591',
permissions: [
{ id: '836215354602029076', permission: true, type: 1 },
{ id: '859507507596230736', permission: true, type: 1 },
{ id: '859471924753072188', permission: true, type: 1 },
{ id: '859878718599987200', permission: true, type: 1 },
{ id: '836214626923315221', permission: true, type: 1 },
{ id: '836214627243262002', permission: true, type: 1 },
{ id: '869931180236083230', permission: true, type: 1 }
]
},
{
id: '914601275298029592',
permissions: [
{ id: '836215354602029076', permission: true, type: 1 },
{ id: '859878718599987200', permission: true, type: 1 },
{ id: '836214626923315221', permission: true, type: 1 },
{ id: '836214627243262002', permission: true, type: 1 },
{ id: '869931180236083230', permission: true, type: 1 }
]
},
{
id: '914601275373551717',
permissions: [
{ id: '836215354602029076', permission: true, type: 1 },
{ id: '859878718599987200', permission: true, type: 1 },
{ id: '836214626923315221', permission: true, type: 1 },
{ id: '869931180236083230', permission: true, type: 1 }
]
}
],
files: []
}
}
我重新注册公会的斜杠命令处理程序。
const slashCommands = await globPromise(
`${process.cwd()}/slash/*/*.js`
);
const arrayOfSlashCommands = [];
slashCommands.map((value) => {
const file = require(value);
if (!file?.name) return;
client.slashCommands.set(file.name, file);
if (["MESSAGE", "USER"].includes(file.type)) delete file.description;
if(file.userPermissions) file.defaultPermission = false;
arrayOfSlashCommands.push(file);
const guild = await client.guilds.cache
.get("836212492769165363")
guild.commands.set(arrayOfSlashCommands).then((cmd) => {
const getRoles = (commandName) => {
const permissions = arrayOfSlashCommands.find(x => x.name === commandName).userPermissions;
if(!permissions) return null;
return guild.roles.cache.filter(x => x.permissions.has(permissions) && !x.managed)
}
const fullPermissions = cmd.reduce((accumulator, x) => {
const roles = getRoles(x.name);
if(!roles) return accumulator;
const permissions = roles.reduce((a, v) => {
return [
...a,
{
id: v.id,
type: 'ROLE',
permission: true,
},
]
}, [])
return [
...accumulator,
{
id: x.id,
permissions,
}
]
}, [])
guild.commands.permissions.set({ fullPermissions })
})
我知道它与倒数第二行有关:guild.commands.permissions.set({ fullPermissions })
,但我该如何解决它?
我糊涂了,我还能说什么
简答
除了进行内部权限检查,别无其他解决方案。
这是目前最好的方式,除非 Discord 实施新的权限系统。
长答案
说明
(n).permissions: Must be 10 or fewer in length
基本上,Discord API 告诉你,你只能在一个斜杠命令中为用户或角色设置 10 个权限。
解决方案
唯一的解决办法是等待 Discord 实施正确类型的权限系统,否则您将需要实施内部权限检查。
已经申请了!但是...
discord-api-docs repo about the new permission system right here 中已经有一个功能请求。
尽管他们现在 跳过了这个想法,但仍然在列表中注明了它。
我打算 运行 我的机器人在比测试服务器更大的服务器上,在我向更大的服务器重新注册斜杠命令后,错误输出:
/home/runner/UnfortunateDistortedEngine/node_modules/discord.js/src/rest/RequestHandler.js:349
throw new DiscordAPIError(data, res.status, request);
^
DiscordAPIError: Invalid Form Body
0.permissions: Must be 10 or fewer in length.
1.permissions: Must be 10 or fewer in length.
2.permissions: Must be 10 or fewer in length.
3.permissions: Must be 10 or fewer in length.
4.permissions: Must be 10 or fewer in length.
5.permissions: Must be 10 or fewer in length.
6.permissions: Must be 10 or fewer in length.
7.permissions: Must be 10 or fewer in length.
8.permissions: Must be 10 or fewer in length.
9.permissions: Must be 10 or fewer in length.
10.permissions: Must be 10 or fewer in length.
at RequestHandler.execute (/home/runner/UnfortunateDistortedEngine/node_modules/discord.js/src/rest/RequestHandler.js:349:13)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async RequestHandler.push (/home/runner/UnfortunateDistortedEngine/node_modules/discord.js/src/rest/RequestHandler.js:50:14) {
method: 'put',
path: '/applications/873528943758692352/guilds/836212492769165363/commands/permissions',
code: 50035,
httpStatus: 400,
requestData: {
json: [
{
id: '914601275201576970',
permissions: [
{ id: '836215354602029076', permission: true, type: 1 },
{ id: '870019089488298105', permission: true, type: 1 },
{ id: '859507507596230736', permission: true, type: 1 },
{ id: '875303313560727552', permission: true, type: 1 },
{ id: '875302171128770601', permission: true, type: 1 },
{ id: '859471924753072188', permission: true, type: 1 },
{ id: '863650251478007818', permission: true, type: 1 },
{ id: '885136706330832926', permission: true, type: 1 },
{ id: '881465412112498689', permission: true, type: 1 },
{ id: '836215269243486239', permission: true, type: 1 },
{ id: '859878718599987200', permission: true, type: 1 },
{ id: '836214626923315221', permission: true, type: 1 },
{ id: '836214627243262002', permission: true, type: 1 },
{ id: '860251609812172820', permission: true, type: 1 },
{ id: '836214626617655296', permission: true, type: 1 },
{ id: '869931180236083230', permission: true, type: 1 },
{ id: '859888824242798612', permission: true, type: 1 }
]
},
{
id: '914601275201576971',
permissions: [
{ id: '836215354602029076', permission: true, type: 1 },
{ id: '870019089488298105', permission: true, type: 1 },
{ id: '859507507596230736', permission: true, type: 1 },
{ id: '875303313560727552', permission: true, type: 1 },
{ id: '875302171128770601', permission: true, type: 1 },
{ id: '859471924753072188', permission: true, type: 1 },
{ id: '863650251478007818', permission: true, type: 1 },
{ id: '885136706330832926', permission: true, type: 1 },
{ id: '881465412112498689', permission: true, type: 1 },
{ id: '836215269243486239', permission: true, type: 1 },
{ id: '859878718599987200', permission: true, type: 1 },
{ id: '836214626923315221', permission: true, type: 1 },
{ id: '836214627243262002', permission: true, type: 1 },
{ id: '860251609812172820', permission: true, type: 1 },
{ id: '836214626617655296', permission: true, type: 1 },
{ id: '869931180236083230', permission: true, type: 1 },
{ id: '859888824242798612', permission: true, type: 1 }
]
},
{
id: '914601275201576972',
permissions: [
{ id: '836215354602029076', permission: true, type: 1 },
{ id: '870019089488298105', permission: true, type: 1 },
{ id: '859507507596230736', permission: true, type: 1 },
{ id: '875303313560727552', permission: true, type: 1 },
{ id: '875302171128770601', permission: true, type: 1 },
{ id: '859471924753072188', permission: true, type: 1 },
{ id: '863650251478007818', permission: true, type: 1 },
{ id: '885136706330832926', permission: true, type: 1 },
{ id: '881465412112498689', permission: true, type: 1 },
{ id: '836215269243486239', permission: true, type: 1 },
{ id: '859878718599987200', permission: true, type: 1 },
{ id: '836214626923315221', permission: true, type: 1 },
{ id: '836214627243262002', permission: true, type: 1 },
{ id: '860251609812172820', permission: true, type: 1 },
{ id: '836214626617655296', permission: true, type: 1 },
{ id: '869931180236083230', permission: true, type: 1 },
{ id: '859888824242798612', permission: true, type: 1 }
]
},
{
id: '914601275201576973',
permissions: [
{ id: '836215354602029076', permission: true, type: 1 },
{ id: '870019089488298105', permission: true, type: 1 },
{ id: '859507507596230736', permission: true, type: 1 },
{ id: '875303313560727552', permission: true, type: 1 },
{ id: '875302171128770601', permission: true, type: 1 },
{ id: '859471924753072188', permission: true, type: 1 },
{ id: '863650251478007818', permission: true, type: 1 },
{ id: '885136706330832926', permission: true, type: 1 },
{ id: '881465412112498689', permission: true, type: 1 },
{ id: '836215269243486239', permission: true, type: 1 },
{ id: '859878718599987200', permission: true, type: 1 },
{ id: '836214626923315221', permission: true, type: 1 },
{ id: '836214627243262002', permission: true, type: 1 },
{ id: '860251609812172820', permission: true, type: 1 },
{ id: '836214626617655296', permission: true, type: 1 },
{ id: '869931180236083230', permission: true, type: 1 },
{ id: '859888824242798612', permission: true, type: 1 }
]
},
{
id: '914601275201576974',
permissions: [
{ id: '836215354602029076', permission: true, type: 1 },
{ id: '870019089488298105', permission: true, type: 1 },
{ id: '859507507596230736', permission: true, type: 1 },
{ id: '875303313560727552', permission: true, type: 1 },
{ id: '875302171128770601', permission: true, type: 1 },
{ id: '859471924753072188', permission: true, type: 1 },
{ id: '863650251478007818', permission: true, type: 1 },
{ id: '885136706330832926', permission: true, type: 1 },
{ id: '881465412112498689', permission: true, type: 1 },
{ id: '836215269243486239', permission: true, type: 1 },
{ id: '859878718599987200', permission: true, type: 1 },
{ id: '836214626923315221', permission: true, type: 1 },
{ id: '836214627243262002', permission: true, type: 1 },
{ id: '860251609812172820', permission: true, type: 1 },
{ id: '836214626617655296', permission: true, type: 1 },
{ id: '869931180236083230', permission: true, type: 1 },
{ id: '859888824242798612', permission: true, type: 1 }
]
},
{
id: '914601275201576975',
permissions: [
{ id: '836215354602029076', permission: true, type: 1 },
{ id: '870019089488298105', permission: true, type: 1 },
{ id: '859507507596230736', permission: true, type: 1 },
{ id: '875303313560727552', permission: true, type: 1 },
{ id: '875302171128770601', permission: true, type: 1 },
{ id: '859471924753072188', permission: true, type: 1 },
{ id: '863650251478007818', permission: true, type: 1 },
{ id: '885136706330832926', permission: true, type: 1 },
{ id: '881465412112498689', permission: true, type: 1 },
{ id: '836215269243486239', permission: true, type: 1 },
{ id: '859878718599987200', permission: true, type: 1 },
{ id: '836214626923315221', permission: true, type: 1 },
{ id: '836214627243262002', permission: true, type: 1 },
{ id: '860251609812172820', permission: true, type: 1 },
{ id: '836214626617655296', permission: true, type: 1 },
{ id: '869931180236083230', permission: true, type: 1 },
{ id: '859888824242798612', permission: true, type: 1 }
]
},
{
id: '914601275201576976',
permissions: [
{ id: '836215354602029076', permission: true, type: 1 },
{ id: '870019089488298105', permission: true, type: 1 },
{ id: '859507507596230736', permission: true, type: 1 },
{ id: '875303313560727552', permission: true, type: 1 },
{ id: '875302171128770601', permission: true, type: 1 },
{ id: '859471924753072188', permission: true, type: 1 },
{ id: '863650251478007818', permission: true, type: 1 },
{ id: '885136706330832926', permission: true, type: 1 },
{ id: '881465412112498689', permission: true, type: 1 },
{ id: '836215269243486239', permission: true, type: 1 },
{ id: '859878718599987200', permission: true, type: 1 },
{ id: '836214626923315221', permission: true, type: 1 },
{ id: '836214627243262002', permission: true, type: 1 },
{ id: '860251609812172820', permission: true, type: 1 },
{ id: '836214626617655296', permission: true, type: 1 },
{ id: '869931180236083230', permission: true, type: 1 },
{ id: '859888824242798612', permission: true, type: 1 }
]
},
{
id: '914601275201576977',
permissions: [
{ id: '836215354602029076', permission: true, type: 1 },
{ id: '870019089488298105', permission: true, type: 1 },
{ id: '859507507596230736', permission: true, type: 1 },
{ id: '875303313560727552', permission: true, type: 1 },
{ id: '875302171128770601', permission: true, type: 1 },
{ id: '859471924753072188', permission: true, type: 1 },
{ id: '863650251478007818', permission: true, type: 1 },
{ id: '885136706330832926', permission: true, type: 1 },
{ id: '881465412112498689', permission: true, type: 1 },
{ id: '836215269243486239', permission: true, type: 1 },
{ id: '859878718599987200', permission: true, type: 1 },
{ id: '836214626923315221', permission: true, type: 1 },
{ id: '836214627243262002', permission: true, type: 1 },
{ id: '860251609812172820', permission: true, type: 1 },
{ id: '836214626617655296', permission: true, type: 1 },
{ id: '869931180236083230', permission: true, type: 1 },
{ id: '859888824242798612', permission: true, type: 1 }
]
},
{
id: '914601275201576978',
permissions: [
{ id: '836215354602029076', permission: true, type: 1 },
{ id: '870019089488298105', permission: true, type: 1 },
{ id: '859507507596230736', permission: true, type: 1 },
{ id: '875303313560727552', permission: true, type: 1 },
{ id: '875302171128770601', permission: true, type: 1 },
{ id: '859471924753072188', permission: true, type: 1 },
{ id: '863650251478007818', permission: true, type: 1 },
{ id: '885136706330832926', permission: true, type: 1 },
{ id: '881465412112498689', permission: true, type: 1 },
{ id: '836215269243486239', permission: true, type: 1 },
{ id: '859878718599987200', permission: true, type: 1 },
{ id: '836214626923315221', permission: true, type: 1 },
{ id: '836214627243262002', permission: true, type: 1 },
{ id: '860251609812172820', permission: true, type: 1 },
{ id: '836214626617655296', permission: true, type: 1 },
{ id: '869931180236083230', permission: true, type: 1 },
{ id: '859888824242798612', permission: true, type: 1 }
]
},
{
id: '914601275201576979',
permissions: [
{ id: '836215354602029076', permission: true, type: 1 },
{ id: '870019089488298105', permission: true, type: 1 },
{ id: '859507507596230736', permission: true, type: 1 },
{ id: '875303313560727552', permission: true, type: 1 },
{ id: '875302171128770601', permission: true, type: 1 },
{ id: '859471924753072188', permission: true, type: 1 },
{ id: '863650251478007818', permission: true, type: 1 },
{ id: '885136706330832926', permission: true, type: 1 },
{ id: '881465412112498689', permission: true, type: 1 },
{ id: '836215269243486239', permission: true, type: 1 },
{ id: '859878718599987200', permission: true, type: 1 },
{ id: '836214626923315221', permission: true, type: 1 },
{ id: '836214627243262002', permission: true, type: 1 },
{ id: '860251609812172820', permission: true, type: 1 },
{ id: '836214626617655296', permission: true, type: 1 },
{ id: '869931180236083230', permission: true, type: 1 },
{ id: '859888824242798612', permission: true, type: 1 }
]
},
{
id: '914601275298029588',
permissions: [
{ id: '836215354602029076', permission: true, type: 1 },
{ id: '870019089488298105', permission: true, type: 1 },
{ id: '859507507596230736', permission: true, type: 1 },
{ id: '875303313560727552', permission: true, type: 1 },
{ id: '875302171128770601', permission: true, type: 1 },
{ id: '859471924753072188', permission: true, type: 1 },
{ id: '863650251478007818', permission: true, type: 1 },
{ id: '885136706330832926', permission: true, type: 1 },
{ id: '881465412112498689', permission: true, type: 1 },
{ id: '836215269243486239', permission: true, type: 1 },
{ id: '859878718599987200', permission: true, type: 1 },
{ id: '836214626923315221', permission: true, type: 1 },
{ id: '836214627243262002', permission: true, type: 1 },
{ id: '860251609812172820', permission: true, type: 1 },
{ id: '836214626617655296', permission: true, type: 1 },
{ id: '869931180236083230', permission: true, type: 1 },
{ id: '859888824242798612', permission: true, type: 1 }
]
},
{
id: '914601275298029589',
permissions: [
{ id: '836215354602029076', permission: true, type: 1 },
{ id: '859878718599987200', permission: true, type: 1 },
{ id: '836214626923315221', permission: true, type: 1 },
{ id: '836214627243262002', permission: true, type: 1 },
{ id: '869931180236083230', permission: true, type: 1 }
]
},
{
id: '914601275298029590',
permissions: [
{ id: '836215354602029076', permission: true, type: 1 },
{ id: '859878718599987200', permission: true, type: 1 },
{ id: '836214626923315221', permission: true, type: 1 },
{ id: '836214627243262002', permission: true, type: 1 },
{ id: '869931180236083230', permission: true, type: 1 }
]
},
{
id: '914601275298029591',
permissions: [
{ id: '836215354602029076', permission: true, type: 1 },
{ id: '859507507596230736', permission: true, type: 1 },
{ id: '859471924753072188', permission: true, type: 1 },
{ id: '859878718599987200', permission: true, type: 1 },
{ id: '836214626923315221', permission: true, type: 1 },
{ id: '836214627243262002', permission: true, type: 1 },
{ id: '869931180236083230', permission: true, type: 1 }
]
},
{
id: '914601275298029592',
permissions: [
{ id: '836215354602029076', permission: true, type: 1 },
{ id: '859878718599987200', permission: true, type: 1 },
{ id: '836214626923315221', permission: true, type: 1 },
{ id: '836214627243262002', permission: true, type: 1 },
{ id: '869931180236083230', permission: true, type: 1 }
]
},
{
id: '914601275373551717',
permissions: [
{ id: '836215354602029076', permission: true, type: 1 },
{ id: '859878718599987200', permission: true, type: 1 },
{ id: '836214626923315221', permission: true, type: 1 },
{ id: '869931180236083230', permission: true, type: 1 }
]
}
],
files: []
}
}
我重新注册公会的斜杠命令处理程序。
const slashCommands = await globPromise(
`${process.cwd()}/slash/*/*.js`
);
const arrayOfSlashCommands = [];
slashCommands.map((value) => {
const file = require(value);
if (!file?.name) return;
client.slashCommands.set(file.name, file);
if (["MESSAGE", "USER"].includes(file.type)) delete file.description;
if(file.userPermissions) file.defaultPermission = false;
arrayOfSlashCommands.push(file);
const guild = await client.guilds.cache
.get("836212492769165363")
guild.commands.set(arrayOfSlashCommands).then((cmd) => {
const getRoles = (commandName) => {
const permissions = arrayOfSlashCommands.find(x => x.name === commandName).userPermissions;
if(!permissions) return null;
return guild.roles.cache.filter(x => x.permissions.has(permissions) && !x.managed)
}
const fullPermissions = cmd.reduce((accumulator, x) => {
const roles = getRoles(x.name);
if(!roles) return accumulator;
const permissions = roles.reduce((a, v) => {
return [
...a,
{
id: v.id,
type: 'ROLE',
permission: true,
},
]
}, [])
return [
...accumulator,
{
id: x.id,
permissions,
}
]
}, [])
guild.commands.permissions.set({ fullPermissions })
})
我知道它与倒数第二行有关:guild.commands.permissions.set({ fullPermissions })
,但我该如何解决它?
我糊涂了,我还能说什么
简答
除了进行内部权限检查,别无其他解决方案。
这是目前最好的方式,除非 Discord 实施新的权限系统。
长答案
说明
(n).permissions: Must be 10 or fewer in length
基本上,Discord API 告诉你,你只能在一个斜杠命令中为用户或角色设置 10 个权限。
解决方案
唯一的解决办法是等待 Discord 实施正确类型的权限系统,否则您将需要实施内部权限检查。
已经申请了!但是...
discord-api-docs repo about the new permission system right here 中已经有一个功能请求。
尽管他们现在 跳过了这个想法,但仍然在列表中注明了它。