Discordjs 检查用户是否有角色

Discordjs check if a user has a role

我有这段代码可以正常工作,我只需要检查用户是否有角色,它会记录所有用户,包括他们的 ID、鉴别器和用户名 exc。我只是无法获得角色。你们能帮忙吗?

client.on('ready', () => {
  console.log(`logged in as ${client.user.username}`);

    var Count;
    for(Count in client.users.array()){
       var User = client.users.array()[Count];
       if(User.username == "someUsername"){
         //User.sendMessage("you");
       }
       //User.checkRole("Admin");

    }
}

checkRole() 函数是我编的东西。我只是需要一些帮助。

client.on('ready', () => {
    console.log(`logged in as ${client.user.username}`);

    var Count;
    for(Count in client.users.array()){
       var User = client.users.array()[Count];
       if(User.hasRole("Admin")){
          console.log(User.username);
       }
    }
})

你可以这样做:

// assuming role.id is an actual ID of a valid role:
if(message.member.roles.has(role.id)) {
  // user has that role
} else {
  //user doesn't have that role
}

https://anidiotsguide.gitbooks.io/discord-js-bot-guide/information/understanding-roles.html

要访问角色,您必须通过公会来访问它,而不是 用户。 (正如@Wright 所提到的)

我会使用地图来保存所有公会成员,然后遍历每个成员(这样当你遇到一个具有特定角色名称的成员时,你仍然可以访问公会对象(因为它是公会成员对象)

m = client.guilds.map(function (obj) {
    return obj.members;
});
for (var i = 0; i < m.length; i++) {
    console.log("\n\nNew Guild: ");        
    console.log(m[i].map(function (obj) {
        return obj.guild.name + " , " + obj.user.username + "  :  " + obj._roles;
    }).join('\n'));
}

我得到的输出是(我删除了用户名):