Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1.5K
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda