我无法向用户添加角色。这是我的代码,如果我运行此代码,则会收到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)
谢谢!
答案 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
。