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

208
Vistas
El permiso de canal Overwrites funciona perfectamente en el 90% de los gremios, pero en algunos gremios regresa el error.

Entonces, como dije en el título, en algunos gremios, el permissionOverwrites de sobreescritura del canal no funciona, lo que lleva a bloquear el bot.

Aquí está el código:

 const qu = message.guild.roles.cache.find( (role) => role.name.toLowerCase() === '', ); if (!qu) { try { let qu = await message.guild.roles.create({ name: '', color: '#', }); try { await message.guild.channels.cache.forEach(async (channel) => { await channel.permissionOverwrites .edit(qu, { VIEW_CHANNEL: false, }) .then(console.log) .catch(console.error); }); } catch (e) { await console.log(e); } } catch (e) { await console.log(e); } }

Aquí está el error que me sale en la consola:

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

channel.permissionOverwrites.edit , .create y .set devuelven el mismo error. No sé qué hay detrás de este error, si tienes alguna idea de por qué, házmelo saber.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

No todos los canales tienen permissionOverwrites de sobrescritura. ThreadChannel s y DirectoryChannel s , por ejemplo, no los tienen. Si un gremio tiene estos canales almacenados en caché, recibirá un error en su bucle forEach . Registraría y channel.type para ver qué tipos causan estos errores.

Para resolver esto, debe filtrar estos:

 await message.guild.channels.cache .filter( (channel) => ![ 'GUILD_DIRECTORY', 'GUILD_NEWS_THREAD', 'GUILD_PRIVATE_THREAD', 'GUILD_PUBLIC_THREAD', ].includes(channel.type), ) .forEach(async (channel) => { await channel.permissionOverwrites .edit(qu, { VIEW_CHANNEL: false, }) .then(console.log) .catch(console.error); });

... o solo incluya los que necesita (por ejemplo, TextChannel y CategoryChannel ):

 await message.guild.channels.cache .filter((channel) => [ 'GUILD_CATEGORY', 'GUILD_TEXT', 'GUILD_VOICE', ].includes(channel.type), ) .forEach(async (channel) => { await channel.permissionOverwrites .edit(qu, { VIEW_CHANNEL: false, }) .then(console.log) .catch(console.error); });
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