es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

JDA 5: El ID especificado no es un snowflake válido.

He estado intentando escribir un comando para mi pequeño bot de moderación que toma al usuario mencionado en la sintaxis y les asigna un rol durante un cierto período de tiempo especificado.

Sin embargo, sin importar qué código intente, o mi IDE me regaña, o usualmente obtengo el mismo mensaje de error exacto. Cuando intento con un código como este:

if (args.length == 2) {
    Member member = event.getGuild().getMemberById(args[1].replace("<@", "").replace(">", ""));
    Role role = (Role) event.getGuild().getRolesByName("Muted", true);

Continuamente obtengo este mensaje de error en la consola aquí:

[JDA MainWS-ReadThread] ERROR JDA - Uno de los EventListeners tuvo una excepción no capturada
java.lang.NumberFormatException: El ID especificado no es un snowflake válido (<@!389127045520556043>). ¡Se espera un valor largo válido!

Sin embargo, cuando intento con un código como este:

if (args.length == 2) {
    Member member = (Member) event.getGuild().getMembersByName(args[1], true);
    Role role = (Role) event.getGuild().getRolesByName("Muted", true);

Obtengo el error de:

[JDA MainWS-ReadThread] ERROR JDA - Uno de los EventListeners tuvo una excepción no capturada
java.lang.ClassCastException: la clase java.util.Collections$UnmodifiableRandomAccessList no se puede convertir a la clase net.dv8tion.jda.api.entities.Member (java.util.Collections$UnmodifiableRandomAccessList está en el módulo java.base del cargador 'bootstrap'; net.dv8tion.jda.api.entities.Member está en el módulo sin nombre del cargador 'app')

A pesar de que mi IDE me indica que convierta tanto la variable Member como la variable Role a sus respectivos tipos.

He buscado en todos los lugares donde he podido, he intentado buscar incluso en la Documentación de JDA 5 en busca de respuestas, sin éxito. Literalmente creé esta cuenta de stackoverflow porque simplemente no tengo idea de qué más hacer.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que estás intentando asignar un rol a un usuario por cierta cantidad de tiempo usando tu bot de moderación. Sin embargo, te estás encontrando con errores al intentar escribir el código para este comando.

    El mensaje de error que estás recibiendo sugiere que el ID de usuario no es válido. Deberías verificar si la sintaxis de la mención del usuario es correcta y si el ID proporcionado es realmente un ID de tipo snowflake.

    En tu segundo ejemplo, estás intentando convertir una lista de Miembros a una variable de Miembro único, lo cual causa la excepción de tipo de clase. En su lugar, podrías intentar obtener el primer miembro de la lista:

    if (args.length == 2) {
        List<member> members = event.getGuild().getMembersByName(args[1], true);
        Member member = members.get(0);
        Role role = (Role) event.getGuild().getRolesByName("Muted", true);
    }
    

    Adicionalmente, dado que mencionaste que quieres asignar el rol por cierta cantidad de tiempo, podrías investigar cómo usar el método Guild#addRoleToMember(Member, Role) así como programar la eliminación del rol después de cierta cantidad de tiempo utilizando un ScheduledExecutorService.

    ¡Espero que esto te ayude! Avísame si tienes alguna otra pregunta.

Comments are closed.