javascript - Discord.js:是否有一个函数可以检查用户是否具有排名数组中的排名

标签 javascript arrays discord.js

我目前正在开发一个不和谐的机器人,它有多个仅适用于特定 Angular 色的命令。 我目前拥有允许使用数组中的命令的所有 Angular 色,并且下面的代码有效。

        for (var i = 0; i < Config.AllowedRanks.length; i++) {
            if (message.member.roles.cache.has(Config.AllowedRanks[i])){
                console.log("Access Granted")
        }
     }

但是我该如何让其他没有该 Angular 色的人收到访问被拒绝的消息呢?下面的代码执行了我想要的操作,但当某人拥有该 Angular 色且该 Angular 色不是数组中的第一个 Angular 色时,它也会执行此操作。

        for (var i = 0; i < Config.AllowedRanks.length; i++) {
            if (message.member.roles.cache.has(Config.AllowedRanks[i])){
                console.log("Access Granted")
        } else{
                console.log("Access Denied")
        }
     }

感谢 Bqre 的回答:

        if (Config.AllowedRanks.some(role => message.member.roles.cache.get(role))){
            console.log("Access Granted")
        } else{
            console.log("Access Denied")
        }

最佳答案

对于这种特定情况,我们希望使用 .some() 方法,该方法循环遍历整个数组并检查是否至少有一个元素匹配一定的条件。

例如,让我们创建一个 Angular 色 ID 数组:

const roles = ['id1', 'id2', 'id3'];

从这里我们可以做的是获取我们创建的数组,并使用 .some 检查作者是否至少拥有 一个 具有上述 ID 之一的 Angular 色() 方法。

最终代码

const roles = ['id1', 'id2', 'id3'];
if (roles.some(role => message.member.roles.cache.get(role))) console.log('Access Granted.');
else console.log('Access Denied.');

同样适用于 .every() 方法,该方法检查数组的所有元素是否符合条件 - 在我们的例子中,如果用户拥有所有上述 Angular 色。

关于javascript - Discord.js:是否有一个函数可以检查用户是否具有排名数组中的排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66105210/

相关文章:

javascript - 将图像从一个文件夹复制到 digitalocean 空间中的另一个文件夹

javascript, 播放 url, onStartPlaying 回调

javascript - 根据 JavaScript 中的数组更改 div 背景颜色?

c - 读取txt文件中的数字列表并存储到C中的数组

javascript - AngularJS 应用程序 : how can I fetch date from the view and use it in the controller?

java - 将 byte[] BGRA 数组转换为更有用/更快速的内容 (JAVA)

php - 为什么我不能在 foreach 循环中将元素插入子数组?

javascript - 防止用户在 Discord 的昵称前加点 (discord.js/Discord Bot)

javascript - Discord.JS启动和停止机器人

javascript - RichEmbed 使用硬编码 react 进行更新 (Discord.js)