要使命令起作用,它需要 3 个权限,但是我怎样才能减小它的大小并简化它以识别丢失的那些并发送一个列表,而不是从一个到一个?
例如
list = {
USE_EXTERNAL_EMOJIS: 'use external emojis',
EMBED_LINKS: 'embed links',
READ_MESSAGE_HISTORY: 'read message history'
}
代码:
if (!message.channel.permissionsFor(client.user).has('USE_EXTERNAL_EMOJIS' && 'EMBED_LINKS')) {
return message.channel.send('missing permissions use external emojis and embed links');
}
if (!message.channel.permissionsFor(client.user).has('EMBED_LINKS')) {
return message.channel.send('missing permission embed links');
}
if (!message.channel.permissionsFor(client.user).has('USE_EXTERNAL_EMOJIS')) {
return message.message.channel.send('missing permission use external emojis');
}
if (!message.channel.permissionsFor(client.user).has('READ_MESSAGE_HISTORY')) {
return message.channel.send('missing permission read message history');
}
答案 0 :(得分:1)
您可以使用 Object.entries()
获取 key - value
对的可迭代数组并使用这样的方法
const neededPermsObj = {
USE_EXTERNAL_EMOJIS: 'use external emojis',
EMBED_LINKS: 'embed links',
READ_MESSAGE_HISTORY: 'read message history'
}
const missingPerms = [];
for (const [key, value] of Object.entries(neededPermsObj)) {
if (!message.channel.permissionsFor(client.user).has(key.toString())) {
missingPerms.push(`${key}: ${value}`)
}
}
if (missingPerms.length != 0) return message.channel.send(missingPerms.join('\n')); // prevent from running cmd
else // execute command code here
这将检查机器人是否具有提供的对象的指定权限,并将返回一个包含所有缺失权限的数组