DEV Community

loading...
Cover image for Discord.JS: Datos de Usuarios
Somos Devs

Discord.JS: Datos de Usuarios

doulovera profile image Douglas Lovera ・3 min read

Datos de usuarios

En este post hablaremos de cómo manejar los datos de usuarios que la API de Discord nos da.

¿Qué y cuáles son los datos de usuarios?

Estos son las cosas como el avatar, el nickname, discriminante, ID, etc.

Obtener estos datos son útiles para banear miembros de un servidor, determinar el dueño del bot (tú), o simplemente responder un mensaje con el nombre del usuario.

Pasted image 20210301184707

En el siguiente ejemplo práctico crearemos un comando que le muestre la siguiente información de su perfil a través de un embed:

  • Nombre de usuario en discord.
  • Avatar.
  • Fecha de creación de la cuenta.
  • Estado de actividad.
  • Nickname dentro del servidor.
  • Roles adquiridos en el servidor.
  • ID.

Obteniendo los datos

Para que nuestro bot pueda enviar toda la información, tenemos que pasarle el usuario al que va a recorrer los datos. En este caso, estaremos trabajando con los datos del usuario que envía el comando (al final del post haremos uno más completo según a quién se @mencione).

Para hacer esto, crearemos una variable para acortarnos un poco la escritura:

const user = message.author;
const member = message.member;
Enter fullscreen mode Exit fullscreen mode

¿Por qué hay dos variables?
Pues, puede ser un poco complicado entenderlo de primeras, pero explicándolo resumidamente es que member solo sirve para los datos del usuario dentro del servidor, mientras que user es para datos del usuario en todo discord.

Creando el embed

Vamos a guardar nuestro embed en una constante para que sea fácil de entender cuando leamos el código:

const embed = new Discord.MessageEmbed()
// llenando los datos
Enter fullscreen mode Exit fullscreen mode

Llenando los datos

Ahora que podemos enviar los datos más fácil, explicaré cada línea con un comentario dentro del siguiente código:

// El username del miembro como "autor" del embed más el avatar
.setAuthor('Username: ' + user.tag, user.avatarURL())
// Mostraremos el avatar del usuario en el thumbnail del embed
.setThumbnail(user.avatarURL())
// La fecha de creación de la cuenta como toLocaleDateString()
.addField('Creación de la cuenta', user.createdAt.toLocaleDateString(), true)
// El estado de actividad del usuario
.addField('Estado', user.presence.status, true)
// Si el usuario NO tiene un nickname dentro del servidor, pone "No tiene"
.addField('Apodo', member.nickname ? member.nickname : 'No tiene', true)
// Hacemos un mapeo de los roles del usuario y los separamos por nombres
.addField('Roles', 
          message.member.roles.cache.map(rol => '`' + rol.name + '`').join(', ')
         )
.setFooter('ID: ' + user.id)
Enter fullscreen mode Exit fullscreen mode

Enviar el embed

Y después de todo esto, enviamos el embed al canal con:

// Todo el código de arriba ^
message.channel.send({embed: embed});
Enter fullscreen mode Exit fullscreen mode

Código final

const user = message.author;
const member = message.member;

const embed = new Discord.MessageEmbed()

    .setAuthor('Username: ' + user.tag, user.avatarURL())
    .setThumbnail(user.avatarURL())
    .addField('Creación de la cuenta', user.createdAt.toLocaleDateString(), true)
    .addField('Estado', user.presence.status, true)
    .addField('Apodo', member.nickname ? member.nickname : 'No tiene', true)
    .addField('Roles', 
        message.member.roles.cache.map(rol => '`' + rol.name + '`').join(', ')
    )
    .setFooter('ID: ' + user.id)

message.channel.send({embed: embed});
Enter fullscreen mode Exit fullscreen mode

Final

Muchas gracias por leer este post, espero que te haya sido de ayuda. Recuerda que puedes seguirnos en instagram.

Happy Coding!

Discussion (0)

pic
Editor guide