gpt4 book ai didi

javascript 如何填充数组值的返回值

转载 作者:行者123 更新时间:2023-12-02 22:27:40 25 4
gpt4 key购买 nike

我不知道如何提出问题(标题),所以我就在这里说一下,也许有人可以提供帮助或提供新的观点。我正在使用 discord.js,我想检查用户是否具有消息中的 Angular 色

client.on('message', message => {
if (message.member.roles.find(r => r.name === 'ADMIN')) {
console.log('I am admin');
}
});

现在我的想法是使其成为一个多态函数,因为如果我想检查两个 Angular 色,我必须这样做:

client.on('message', message => {
if (message.member.roles.find(r => r.name === 'ADMIN') || message.member.roles.find(r => r.name === 'Other')) {
console.log('I am admin');
}
});

我想将此 if 条件移至一个函数,即使我想检查一个或多个“权限”,它也会检查它。

现在我已经尝试处理它,但什么也没有,就停在这里......也许有人可以给我一些建议或其他观点。这个想法是为了防止重复的代码和 if 只要我的显示器的宽度。

function hasRole(msg, permissions, condition = 'or') {
if (Array.isArray(permission)) {
if (condition === 'or') {
permissions.forEach(function (element) {

});
// permission.join('||');
return msg.member.roles.find(r => r.name === permissions) ||
msg.member.roles.find(r => r.name === permissions);
} else if (condition === 'and') {

}
}

return msg.member.roles.find(r => r.name === permissions);
}

如果您想查看DiscordJS DOCS .

回应:

function checkPermissions(msg, permissions, condition = 'or') {
if (condition === 'or') {
return msg.member.roles.some(r => permissions.includes(r.name));
} else if (condition === 'and') {
return msg.member.roles.every(r => permissions.includes(r.name));
}
}

最佳答案

类似这样的吗?

function hasRole(msg, permissions, condition = 'or') {

//harmonise @permissions to array, if isn't already one
permissions = Array.isArray(permissions) ? permissions : [permissions];

//if or, at least 1 member role must be present in @permissions
if (condition === 'or')
return msg.member.roles.some(role => permissions.includes(role));

//if and, all member roles must be found in @permissions
else
return permissions.every(perm => msg.member.roles.includes(perm));

}

关于javascript 如何填充数组值的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59011306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com