当前位置: 首页 > 知识库问答 >
问题:

JDAJavaDiscordAPI中的角色处理

柳修平
2023-03-14

我现在正在学习Java,通过使用JDA编写一个discord bot。现在我真的不知道我的错误是怎么用这个角色。

    if (content.equalsIgnoreCase("$addrole")){
            channel.sendMessage("Please select the role you want!\n\n\u2694\uFE0F\tFighter\n\uD83D\uDEE1\tTank").queue(message -> {
                message.addReaction("\u2694\uFE0F").queue();
                message.addReaction("\uD83D\uDEE1").queue();
            });

            //Role role = event.getGuild().getRolesByName("@everyone", true).get(0);

            if (event.getGuild().getRolesByName("fighter", true).isEmpty()){
                role1 = event.getGuild().createRole().setName("Fighter").setPermissions(0L).complete();
            } else {
                System.out.println("Role already exists");
            }
            if (event.getGuild().getRolesByName("tank", true).isEmpty()){
                role2 = event.getGuild().createRole().setName("Tank").setPermissions(0L).complete();
            } else {
                System.out.println("Role already exists");
            }

            System.out.println("Role1 ID is: " + role1.getId());
            System.out.println("Role2 ID is: " + role2.getId());
        }

我确实使用角色role1在MessageListener的开头创建role1和role2作为空对象 和角色2

现在,当执行命令$addrole时,会出现消息并创建角色,但我不能使用role1和role2。每当我试图调用它们时,例如在系统中。出来println(“Role1 ID为:Role1.getId()) 我收到了大量错误,包括一个null指针异常,表示“this.role1为null”。我就是找不到我的错误。


共有1个答案

顾池暝
2023-03-14

因此,要解决这个问题,您可以在打印后返回角色已经存在,或者只是将现有角色分配给变量。

这方面的一个例子是:

String content = e.getMessage().getContentRaw();
TextChannel channel = e.getTextChannel();

Role role1 = null;
Role role2 = null;

    if (content.equalsIgnoreCase("$addrole")) {
        channel.sendMessage("Please select the role you want!\n\n\u2694\uFE0F\tFighter\n\uD83D\uDEE1\tTank")
                    .queue(message -> {
                        message.addReaction("\u2694\uFE0F").queue();
                        message.addReaction("\uD83D\uDEE1").queue();
                    });

        if (e.getGuild().getRolesByName("fighter", true).isEmpty()) {
            role1 = e.getGuild().createRole().setName("fighter").setPermissions(0L).complete();
        } else {
            role1 = e.getGuild().getRolesByName("fighter", true).get(0);
        }
        if (e.getGuild().getRolesByName("tank", true).isEmpty()) {
            role2 = e.getGuild().createRole().setName("tank").setPermissions(0L).complete();
        } else {
            role2 = e.getGuild().getRolesByName("tank", true).get(0);
        }

        System.out.println("Role1 ID is: " + role1.getId());
        System.out.println("Role2 ID is: " + role2.getId());
    }
 类似资料:
  • 我创建了一个具有以下角色的云服务项目: 一个Web角色 一个工作者角色 对于这两个角色,我都添加了Azure Application Insights SDK/Nuget PKG。我还添加了状态监视器到这两个,启动任务。两个角色指向不同的AI资源。对于Worker角色,我还在csdef文件中添加了以下三个环境变量。

  • 我使用的是jhipster 4,我有一个疑问,我试图在没有模式role\u*的情况下放置一个新角色,但当我使用java注释@Secured时,它不起作用。 我在很多网站上查看了这个问题,没有找到任何建议。我需要设置一个名为“监督”的角色,因为我的应用程序需要与其他应用程序集成。 当Web客户端使用角色SUPERVISED执行请求时,它被拒绝的操作 为什么会这样?

  • 所以当bot发送某个消息时,它也会对它做出反应。现在我试着检查一个对这种反应做出反应的用户是否扮演了一定的角色,但是到目前为止我还不能这样做。

  • 我有一个自定义需求,我想根据特定角色决定是否可以访问API。我使用的是Spring框架。我想支持这样的观点: 其中表示一个角色<代码>|和

  • 角色是一系列权限的集合,用户加入项目时的角色决定了用户在项目中的权限。 角色是一系列权限的集合,用户加入项目时的角色决定了用户在项目中的权限。 系统内置角色说明如下: 角色 权限 是否共享 权限范围 权限说明 admin sysadmin 全局共享 系统 用户只有以admin角色加入default的system项目时才有管理后台全部权限。 domainadmin domainadmin 全局共享

  • 角色定义了对集群的指定命名空间下资源的权限。 角色定义了对集群的指定命名空间下资源的权限。多集群角色支持将角色关联到多个集群,并在指定集群中创建同样权限的角色。 入口:在云管平台单击左上角导航菜单,在弹出的左侧菜单栏中单击 “容器/多集群资源/角色” 菜单项,进入角色页面。 新建角色 该功能用于新建多集群角色。新建多集群角色之前请先创建多集群命名空间。 在角色页面,单击列表上方 “新建” 按钮,进