如何只允许特定角色使用此命令

时间:2021-03-08 12:41:27

标签: node.js discord.js

我试图只允许具有 Staff 角色的人员运行此命令。 基本上该命令的作用是允许机器人访问 DM 用户 命令是 <prefix>send @RandomUserName <message>

我试图防止随机用户滥用此命令来淹没其他玩家的 DM。

client.on('message', message => {
    if (!message.content.startsWith(prefix) || message.author.bot) return;

    const args = message.content.slice(prefix.length).trim().split(/ +/);
    const command = args.shift().toLowerCase();
    if (message.member.roles.cache.some(role => role.name === 'Staff')) return;
    if (command === 'send'){
        function getUserFromMention(mention) {
            if (!mention) return;
            if (mention.startsWith('<@') && mention.endsWith('>')) {
                mention = mention.slice(2, -1);
                if (mention.startsWith('!')) {
                    mention = mention.slice(1);
                }
                return mention;
            }
        }
        const user = getUserFromMention(args[0])
        let MessageDM = args[1]
        client.users.cache.get(user).send(MessageDM);
    }
    // ...
});

1 个答案:

答案 0 :(得分:0)

您在角色检查中遗漏了一个否定 (function myFunction() { document.getElementById("myDropdown").classList.toggle("show"); var x = document.getElementById("insights"); if (x.innerHTML === "INSIGHTS &#9662;") { x.innerHTML = "INSIGHTS &#9652;"; } else { x.innerHTML = "INSIGHTS &#9662;"; } } )。您当前的 ! 仅在角色存在时评估为 true。但是如果角色存在,您想if

换线

return

if (message.member.roles.cache.some(role => role.name === 'Staff')) return;

此外,正如我在评论中提到的,将 if (!message.member.roles.cache.some(role => role.name === 'Staff')) return; 放在 function 中从来都不是一个好主意。我只是把它放在上层范围:

if
相关问题