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

Can't add role to user (UnsupportedOperationException)

我无法为用户添加角色。这是我的代码,如果我 运行 这是我得到一个 UnsupportedOperationException 错误。 "cooldownroleid"是角色的ID,我要添加到用户

代码:

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

堆栈跟踪:

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

提前致谢!

getRoles()返回的列表不可修改。这是因为角色 add 还必须通过 RestAction 转发到 discord,这在 List#add.

中是不可用的

正确的方法取决于所使用的 JDA 版本。在版本 4 中,该方法已略微重构。

JDA v3

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

获取 GuildController 并添加角色。

JDA v4

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

无需在版本 4 中使用 GuildController,因为这些方法现在位于 Guild 界面中。