如何检查成员是否具有特定角色

时间:2020-06-22 13:36:29

标签: java bots discord discord-jda

我想为我的不和谐机器人执行此命令以向成员添加角色。

public class team1Command implements ServerCommands {
    public void performCommand(Member m, TextChannel channel, Message message) {
    m.getGuild().addRoleToMember(message.getMember(), message.getGuild().getRoleById(the ID of team 1)).queue();
    channel.sendMessage("you joined team 1").queue();
    }
}

现在,我希望仅当该成员不具有“团队2”角色时该命令才能工作

3 个答案:

答案 0 :(得分:0)

我对discord api不太熟悉,但是这样的事情呢?

if(m.getGuild().getRoleById(the ID of team 2) != null) {
    ....
}

顺便说一句,

问题中的代码格式会很好

答案 1 :(得分:0)

你好,下面是一个代码示例:

Role role = guild.getRoleById(661155250123702302L);

if(member.getRoles().contains(role)) {
    // Member has the role
}else {
    // Member dont has the role
}

您只需将RoleID更改为所需角色的ID,就可以通过转到Discord Server的“ 服务器设置”来获取角色的ID,转到“ 角色”,然后右键单击您的角色,然后单击“ 复制ID ”。

如果看不到“ 副本ID ”,则必须通过打开“ 用户设置”来启用“ Discord Developer ”模式,转到“ 外观”,向下滚动到“ 高级”,然后打开“ 开发人员模式”。

玩得开心,希望我能为您提供帮助!

答案 2 :(得分:0)

文档中暂时没有此类功能。 您仍然可以这样做:

boolean hasRole;
  for(int i=0; i<builder.getGuildById(guild).getMemberById(userId).getRoles().size(); i++){
    if("RoleName".equals(builder.getGuildById(guild).getMemberById(userId).getRoles().get(i).getName())){
      hasRole = true;
    }
  }

然后,对于true if (hasRole)或false if (!hasRole)?