首页 > 解决方案 > 如何检查多个角色 discord.js v12

问题描述

我对 discord js 很陌生/很糟糕。但我想用“允许的角色”创建一个命令,所以只有管理员、所有者和 mod 可以使用它。但我不知道怎么做。

我试过这个:

client.on('message', message => {
 if(message.content === 'test') {
 let allowedRole = message.guild.roles.cache.find(r => r.name === "owner");
let allowedRole1 = message.guild.roles.cache.find(r => r.name === "mod");
let allowedRole2 = message.guild.roles.cache.find(r => r.name === "admin");
if (message.member.roles.cache.has(allowedRole.id) && message.member.roles.cache.has(allowedRole1.id) && message.member.roles.cache.has(allowedRole2.id)) {
message.channel.send('hello');
} else { 
   message.channel.send('bad');
}
}});

标签: discorddiscord.js

解决方案


在您的示例中,仅接受具有所有三个角色的用户(由于逻辑 AND运算符)。

替换&&||它应该可以按预期工作。

client.on('message', async message => {
  if (message.content === 'test') {
    let allowedRole = await message.guild.roles.cache.find(
      r => r.name === 'owner'
    );
    let allowedRole1 = await message.guild.roles.cache.find(
      r => r.name === 'mod'
    );
    let allowedRole2 = await message.guild.roles.cache.find(
      r => r.name === 'admin'
    );

    if (
      message.member.roles.cache.has(allowedRole.id) ||
      message.member.roles.cache.has(allowedRole1.id) ||
      message.member.roles.cache.has(allowedRole2.id)
    ) {
      message.channel.send('hello');
    } else {
      message.channel.send('bad');
    }
  }
});

推荐阅读