Discord机器人公会成员.角色.缓存.有(roleID1||roleID2)



我正在编写一个机器人程序来验证discord服务器上的角色,当我向guildMember.roles.cache.has()写入多个变量时,遇到了一个问题。机器人不会检查所有角色,是否可以为机器人做些什么来检查操作员的多个角色?谢谢

if (command === 'verify' && mcname !=null && message.channel.type == "dm") {                                                                  
//IF COMMAND IS VERIFY,MCNAME NOT EMPTY AND CHANNEL IS DM
const guild = await message.client.guilds.fetch(serverid);
const guildMember = await guild.members.fetch(message.author.id);
if (guildMember.roles.cache.has(roleID1 || roleID2 || roleID3 || roleID4 || roleID5 || roleID6 || roleID7)) { 

我已经在上面定义了角色id。

您可以将这些角色ID存储在一个数组中,并检查成员是否有这些ID。guildMember.roles.cache返回一个角色集合,因此您可以使用some()方法检查ID数组中是否包含成员角色的任何ID:

const roleIDs = [roleID1, roleID2, roleID3, roleID4, roleID5, roleID6, roleID7];
if (guildMember.roles.cache.some(role => roleIDs.includes(role.id))) {
// ... 

试试下面的片段:

const guildMember = {
roles: {
cache: [{ id: '1' }, { id: '5' }, { id: '9' }]
}
}
const roleIDs1 = ['2', '3', '4']
const roleIDs2 = ['3', '4', '5', '6', '7']
console.log('Member has a role ID included in roleIDs1?', guildMember.roles.cache.some(role => roleIDs1.includes(role.id)))
console.log('Member has a role ID included in roleIDs2?', guildMember.roles.cache.some(role => roleIDs2.includes(role.id)))

最新更新