Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

343
Vistas
TypeError: member.roles.add no es una función (discord.js v13)

Estoy trabajando en un bot que necesita verificar algunas cosas antes de otorgar/eliminar un rol de un usuario, pero por alguna razón, las .has() , .some( .some() , .add() y .remove() no trabajes

Aquí está mi código:

 const Permissions = require('discord.js'); function isAdmin(member) { return member.permissions.has(Permissions.FLAGS.ADMINISTRATOR); } function hasRole(member, roleID) { return member.roles.some(role => role.id === roleID); } function giveRole(member, role) { member.roles.add(role) } function removeRole(member, role) { member.roles.remove(role); }

Aquí está el error completo que me sale:

 TypeError: member.roles.add is not a function at Object.giveRole (C:\Users\Admin\OneDrive\Documents\Github Projects\discordBots-BOK-BOT\util.js:101:30) at Object.buttonClicked (C:\Users\Admin\OneDrive\Documents\Github Projects\discordBots-BOK-BOT\commands\buttonRole\execute.js:23:14) at WebSocketManager.<anonymous> (C:\Users\Admin\OneDrive\Documents\Github Projects\discordBots-BOK-BOT\index.js:101:28) at WebSocketManager.emit (node:events:390:28) at WebSocketShard.onMessage (C:\Users\Admin\OneDrive\Documents\Github Projects\discordBots-BOK-BOT\node_modules\discord.js\src\client\websocket\WebSocketShard.js:300:54) at WebSocket.onMessage (C:\Users\Admin\OneDrive\Documents\Github Projects\discordBots-BOK-BOT\node_modules\ws\lib\event-target.js:199:18) at WebSocket.emit (node:events:390:28) at Receiver.receiverOnMessage (C:\Users\Admin\OneDrive\Documents\Github Projects\discordBots-BOK-BOT\node_modules\ws\lib\websocket.js:1137:20) at Receiver.emit (node:events:390:28) at Receiver.dataMessage (C:\Users\Admin\OneDrive\Documents\Github Projects\discordBots-BOK-BOT\node_modules\ws\lib\receiver.js:528:14) at Receiver.getData (C:\Users\Admin\OneDrive\Documents\Github Projects\discordBots-BOK-BOT\node_modules\ws\lib\receiver.js:446:17) at Receiver.startLoop (C:\Users\Admin\OneDrive\Documents\Github Projects\discordBots-BOK-BOT\node_modules\ws\lib\receiver.js:148:22) at Receiver._write (C:\Users\Admin\OneDrive\Documents\Github Projects\discordBots-BOK-BOT\node_modules\ws\lib\receiver.js:83:10) at writeOrBuffer (node:internal/streams/writable:389:12) at _write (node:internal/streams/writable:330:10) at Receiver.Writable.write (node:internal/streams/writable:334:10) at TLSSocket.socketOnData (C:\Users\Admin\OneDrive\Documents\Github Projects\discordBots-BOK-BOT\node_modules\ws\lib\websocket.js:1231:35) at TLSSocket.emit (node:events:390:28) at addChunk (node:internal/streams/readable:315:12) at readableAddChunk (node:internal/streams/readable:289:9) at TLSSocket.Readable.push (node:internal/streams/readable:228:10) at TLSWrap.onStreamRead (node:internal/stream_base_commons:199:23)
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Después de revisar las clases de Discord.js, descubrí que no puedes simplemente usar

 let member = interaction.member;

para obtener un miembro del gremio, pero en su lugar, tienes que hacer

 let member = await guild.members.fetch("ID");

Después de hacer eso, las member.permissions.has , member.roles.add y member.roles.remove funcionan.

La única función que aún no funciona es member.roles.some , esto se debe a que la clase GuildMemberRoleManager solo tiene funciones de add , set y remove . La función member.roles.some se puede cambiar para usar member._roles ya que devuelve una lista de cadenas que contienen todos los roles que tiene el miembro del gremio y se puede hacer así:

 function hasRole(member, roleID) { return member._roles.indexOf(roleID) >= 0; }
about 4 years ago · Juan Pablo Isaza Denunciar

0

En Discord.js versión 12, la sintaxis cambió en su mayoría. La propiedad de caché ahora contiene el caché para muchos de los roles, y existe la posibilidad de que necesite usar una Promesa y buscarla...

 // in an ASYNC FUNCTION let roles = await member.roles.fetch(); return roles.some(role => role.id === roleID);
about 4 years ago · Juan Pablo Isaza Denunciar

0

¿Intentaste así?

 var role = message.guild.roles.cache.find(role => role.name === "Role_Name") member.roles.add(role) var role = message.guild.roles.cache.find(role => role.id === "Role_Id") member.roles.add(role)
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda