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

1.5K
Vistas
La función discord.js v13 permisos.has() no funciona (TypeError: no se pueden leer las propiedades de undefined (leyendo 'has'))

Quiero programar un comando de ban para mi bot de Discord. Tengo esta línea donde el bot debe verificar si un usuario tiene el permiso de Administrador. Si el usuario que debería ser baneado los tiene, el bot no banea al usuario y falla. Cuando trato de ejecutar este comando me sale esto:

 TypeError: Cannot read properties of undefined (reading 'has')

no entiendo porque Nadie a quien le pregunté pudo ayudarme, no encontré nada en línea, así que espero poder encontrar ayuda aquí.

Mi código:

 const discord = require('discord.js'); const { Permissions } = require('discord.js'); module.exports.run = async (Client, message, args) => { if (!message.member.roles.cache.some(role => role.id == 589850931785498624)) { return message.reply("You don't have the perms."); } const mention = message.mentions.users.first(); if (!mention) { return message.reply('You need to tag a user!'); } if (mention.permissions.has(Permissions.FLAGS.MANAGE_CHANNELS)) { return message.reply("You can't ban an Administrator!") } //message.guild.members.ban(mention); } module.exports.help = { name: "ban", aliases: ["b"], }
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

"Error de tipo: no se pueden leer las propiedades de undefined (leyendo 'has')" significa que mention.permissions la mención no están undefined . Es porque su variable de mention es un User y solo los miembros del GuildMember tienen permissions .

Otro error es que intenta verificar si role.id es igual a un número/entero, pero los copos de nieve (como 589850931785498624 ) siempre deben ser cadenas , ya que son mayores que MAX_SAFE_INTEGER .

 module.exports.run = async (Client, message, args) => { if (!message.member.roles.cache.some((role) => role.id == '589850931785498624')) return message.reply("You don't have the perms."); const mentionedMember = message.mentions.members.first(); if (!mentionedMember) return message.reply('You need to tag a user!'); if (mentionedMember.permissions.has(Permissions.FLAGS.MANAGE_CHANNELS)) return message.reply("You can't ban an Administrator!"); message.guild.members.ban(mentionedMember); };
over 4 years ago · Santiago Trujillo 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