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

Posted

技术标签:

【中文标题】如何检查成员是不是具有特定角色【英文标题】:how to check if member has a specific role如何检查成员是否具有特定角色 【发布时间】:2020-10-12 09:24:37 【问题描述】:

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

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”角色时才起作用

【问题讨论】:

【参考方案1】:

我对 discord api 不是很熟悉,但是像这样的东西呢:

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


顺便说一句,您问题中的代码格式会很好

【讨论】:

【参考方案2】:

你好,下面是代码示例:

Role role = guild.getRoleById(661155250123702302L);

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

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

如果您没有看到“复制 ID”,您必须通过打开“用户设置”来启用“Discord Developer”模式,转到“外观”,向下滚动到“高级”并打开“开发者模式”。

玩得开心,希望能帮到你!

【讨论】:

【参考方案3】:

文档中暂时没有这样的功能。 你仍然可以这样做:

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;
    
  

那么,为真if (hasRole) 或假if (!hasRole) ?

【讨论】:

以上是关于如何检查成员是不是具有特定角色的主要内容,如果未能解决你的问题,请参考以下文章

如何检查用户是不是具有特定角色并因此允许某些操作?

如何检查用户是不是具有特定角色 discord.js v12? [复制]

如何检查用户是不是在 Meteor 中具有特定角色

检查用户是不是具有 x 角色之一,然后从他们中删除该角色

Discord.js V12 如何显示具有特定角色的所有成员?

Discord.py - 检查用户是不是具有执行命令的特定角色