【发布时间】:2020-03-19 12:47:48
【问题描述】:
我不知道如何提出问题(标题),所以我就在这里说一下,也许有人可以帮助或提供一个新的观点。
我正在使用discord.js,我想检查用户是否具有来自消息的角色
client.on('message', message => {
if (message.member.roles.find(r => r.name === 'ADMIN')) {
console.log('I am admin');
}
});
现在我的想法是让它成为一个多态函数,因为如果我想检查两个角色,我必须这样做:
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));
}
}
【问题讨论】:
标签: javascript arrays discord.js