无法向用户添加角色(UnsupportedOperationException)

时间:2019-06-28 13:44:48

标签: discord-jda

我无法向用户添加角色。这是我的代码,如果我运行此代码,则会收到UnsupportedOperationException错误。 “ cooldownroleid”是角色的ID,我想添加到用户中。

代码:

Role cooldownrole = event.getGuild().getRoleById(cooldownroleid);
event.getMember().getRoles().add(cooldownrole);

Stacktrace:

> ERROR net.dv8tion.jda.core.JDA - One of the EventListeners had an uncaught 
  exception java.lang.UnsupportedOperationException: null   
at
> java.util.Collections$UnmodifiableCollection.add(Collections.java:1055)
> ~[na:1.8.0_212]

“ cooldownrole”的输出

> R:cooldown(594147714510356500)

谢谢!

1 个答案:

答案 0 :(得分:0)

getRoles()返回的列表不可修改。这是因为还必须通过RestAction转发角色添加以使其不协调,而List#add则不可用。

正确的方法取决于所使用的JDA版本。在版本4中,该方法进行了稍微的重构。

JDA v3

GuildController controller = guild.getController();
controller.addSingleRoleToMember(member, cooldownrole).queue();

获取GuildController并添加角色。

JDA v4

guild.addRoleToMember(member, cooldownrole).queue();

由于版本4的方法现在位于Guild界面中,因此无需在版本4中使用GuildController