No puedo agregar un papel a un usuario. Este es mi código, si ejecuto esto, obtengo un error sin apoyoPortado. "COOLDOWNROLEID" es la identificación del rol, quiero agregar al usuario.

Código:

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]

Salida para "cooldownrole"

> R:cooldown(594147714510356500)

¡Gracias de antemano!

0
genericStackOverflowUser 28 jun. 2019 a las 16:44

1 respuesta

La mejor respuesta

La lista devuelta por getRoles() no es modificable. Esto se debe a que la función se agrega también debe enviarse para discordarse a través de un RestAction que no es algo disponible a través de List#add.

El enfoque correcto depende de la versión de JDA utilizada. En la versión 4, el método ha sido ligeramente refactorado.

jda v3

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

Obtenga el GuildController y agregue el rol.

jda v4

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

No es necesario usar GuildController en la versión 4 ya que los métodos están ahora en la interfaz del gremio.

0
Minn 28 jun. 2019 a las 16:34