如何检查用户是否有异议 [英] How to check is an user has a role on discord

查看:45
本文介绍了如何检查用户是否有异议的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在努力寻找一种方法来检查用户是否具有角色.我知道如何找到特定角色:

I am struggling to find a way to check if an user has a role. I know how to find a certain role:

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();

I know how to search an user: String user=event.getAuthor().getId(); or: User user=event.getAuthor();

但是我不知道如何在JDA中使这两个一起工作,以检查该用户是否具有该角色.

But i don't know how to get those two work together in JDA to check if that user has that role.

可以请人帮我吗?

推荐答案

Member 对象将用户置于行会上下文中.您可以使用 Guild#getMember(user)获得成员.这使您可以选择检索该用户的行会信息:

The Member object puts a user in the guild context. You can get the member with Guild#getMember(user). This gives you the option to retrieve guild information of this 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
}

访问成员实例的其他方法在成员文档的另请参见部分中概述:

Other ways to access a member instance are outlined in the See Also section of the member documentation: Member. Some events also offer a getMember() alternative if the event could happen in a guild context.

这篇关于如何检查用户是否有异议的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆