Невозможно добавить роль пользователю (UnsupportedOperationException) - PullRequest
0 голосов
/ 28 июня 2019

Я не могу добавить роль пользователю.Это мой код, если я запускаю его, я получаю ошибку UnsupportedOperationException."cooldownroleid" - это идентификатор роли, которую я хочу добавить пользователю.

Код:

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 голосов
/ 28 июня 2019

Список, возвращаемый 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();

Нет необходимости использовать GuildController в версии 4, поскольку методы теперь находятся в интерфейсе гильдии.

...