簡體   English   中英

如何檢查用戶是否在 discord 上具有角色

[英]How to check is an user has a role on discord

我正在努力尋找一種方法來檢查用戶是否具有角色。 我知道如何找到某個角色:

public Role findRole(Guild guild, String name) {
    List<Role> roles = guild.getRolesByName(name, true);

    if (roles.size() <= 0) {
        throw new RuntimeException("Role with name " + name + " on Guild " + guild.getName() + " not found!");
    } else {
        return roles.get(0);
    }
}

我有一個角色: Role neededEole=findRole(event.getGuild(),"Admin");

我知道如何搜索用戶: String user=event.getAuthor().getId(); 或: User user=event.getAuthor();

但我不知道如何讓這兩個在 JDA 中一起工作以檢查該用戶是否具有該角色。

可以請人幫助我嗎?

Member object 將用戶置於公會上下文中。 您可以使用Guild#getMember(user)獲取成員。 這使您可以選擇檢索此用戶的公會信息:

Member member = guild.getMember(user);
Member member = guild.getMemberById(userId);
List<Member> member = guild.getMembersByName(name, true);
List<Member> member = guild.getMembersByRoles(role);
public Role findRole(Member member, String name) {
    List<Role> roles = member.getRoles();
    return roles.stream()
                .filter(role -> role.getName().equals(name)) // filter by role name
                .findFirst() // take first result
                .orElse(null); // else return null
}

訪問成員實例的其他方法在成員文檔的See Also部分中概述: 成員 如果事件可能發生在公會上下文中,某些事件還提供getMember()替代方案。

我知道這篇文章已有 1 年以上的歷史,但對於來這里檢查的人來說,你可以這樣做(我在這段代碼中做了 static,因為我把它放在另一個類中):

public static boolean hasRole(Member member, Role role) {
  List<Role> memberRoles = member.getRoles();
  return memberRoles.contains(role);
}

由於文檔中還沒有這樣的功能,您可以這樣做:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM