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

Discord JDA无法创建角色

徐唯
2023-03-14

我目前正在使用Discord JDA by dv8tion在Java中编写Discord机器人。在那里,我有一个在公会中创建角色的巨大问题。当我尝试创建一个角色时,它被卡住了,没有创建角色,但是没有错误。我尝试过使用两种不同的方法来创建角色。第一个:

Guild g = bot.getGuildById(816744384925663275L);
Role rle;
try {
    rle = g.createRole().setName("Owner").submit().get();
    rle.getManager().setColor(Color.red).queue();
    rle.getManager().setHoisted(true).queue();
    rle.getManager().setMentionable(false).queue();
    rle.getManager().setPermissions(Permission.ADMINISTRATOR).queue();
} catch (InterruptedException e) {
    e.printStackTrace();
} catch (ExecutionException e) {
    e.printStackTrace();
}

第二个是:

Guild g = bot.getGuildById(816744384925663275L);
Role rle = g.createRole().setName("Owner").complete();
    rle.getManager().setColor(Color.red).queue();
    rle.getManager().setHoisted(true).queue();
    rle.getManager().setMentionable(false).queue();
    rle.getManager().setPermissions(Permission.ADMINISTRATOR).queue();

通过在每一行代码之后在控制台中打印一些东西,我注意到它会卡在其中有g.create角色()的行之后。我不知道那里发生了什么,或者这是JDA的一个错误。我希望有人能帮我。

共有1个答案

麻和雅
2023-03-14

你应该用它来创建一个角色:

guild.createRole()
  .setName("Owner")
  .setColor(Color.red)
  .setHoisted(true)
  .setMentionable(false)
  .setPermissions(Permission.ADMINISTRATOR)
  .queue(role -> {
    System.out.println("Created role");
  });

如果这不起作用,有三个可能的原因:

  1. createRole引发了异常(使用try/catch)
  2. queue()由于连接或不协调错误而失败(请确保未关闭JDA日志
  3. 您的代码未运行(使用调试器)

您应该始终尝试设置所有字段并调用队列一次。在使用getManager的代码中,您可以为每个更改发送编辑请求,这是完全不必要的,因为管理器可以一次更新多个字段,只需在设置所有更改后调用队列()。由于速率限制,每个设置程序的调用队列只会使更新变慢。

 类似资料:
  • 我编写了代码,但在构建它之后,我得到了以下内容: core-js@2.6.9 postinstall c:\users\admin\desktop\test code\angfirst\hello-world\node_modules\babel-runtime\node_modules\core-js node scripts/postinstall echo“ignore” core-js@2

  • 我无法获得任何与CreateUser一起工作的东西。

  • 我使用Linux Mint肉桂2.2.16。 在安装和运行Rails的过程中,我遇到了Postgres的问题。 我无法在我的常用用户名下使用任何东西,因此我使用 我无法获得任何与createuser一起工作的内容。

  • 创建角色       进入角色管理界面,点击添加角色,打开添加角色面板,输入角色名称,选择对应的权限,点击确定,完成角色创建。

  • 我的代码更长,但我没有复制所有的代码,我看到程序停在这里 对不起我的英语。

  • 问题内容: 我正在使用node.js,并将音频流式传输到我的node.js服务器。现在,我在构建音频Blob的过程中注意到: 我在新的Blob处收到ReferenceError。似乎不支持Blob。如何创建要使用node.js fs模块保存的Blob。 谢谢你们! 问题答案: 解决此问题的方法是创建一个可以在数组缓冲区和节点缓冲区之间转换的函数。 将二进制NodeJS缓冲区转换为JavaScrip