He estado jugando con esto por un tiempo y nunca he creado un canal basado en permisos. Estoy trabajando en una función de ticket para mi bot y parece que no puedo hacer que funcione. La idea es crear un canal con permisos establecidos denominado la etiqueta completa message.author con los permisos establecidos para permitir que el message.author solo vea el canal. Por alguna razón sigo corriendo en un error. ¿Cómo puedo arreglar esto? He definido el rol de todos y el mensaje.autor ya debería estar definido. ¿Me estoy perdiendo de algo?
if (message.channel.type !== "text") { let active = db.fetch(`support_${message.author.id}`) let guild = client.guilds.cache.get('took out ID') let channel, found = true try { if (active) client.channels.cache.get(active.channelID).guild } catch (e) { found = false; } if(!active || !found) { active = {} let everyoneRole = msg.guild.roles.cache.find(r => r.name === '@everyone'); channel = await guild.channels.create(`${message.author.username}-${message.author.discriminator}`, { parent: 'took out ID', topic: `Support for ${message.author.tag} | ID: ${message.author.id}`, permissionOverwrites: [ { id: everyoneRole.id, deny: ['VIEW_CHANNEL'], id: message.author.id, allow: ['VIEW_CHANNEL'], }, ], })Puedes usar roles.everyone que devuelve el rol @everyone del gremio o simplemente usar la ID del gremio . Además, sus sobrescrituras son incorrectas. Debe contener dos objetos; uno que niega vistas para todos y otro que lo permite para el miembro que envió el mensaje.
Cualquiera de estos funcionará:
let permissionOverwrites = [ { id: message.guild.roles.everyone.id, deny: ['VIEW_CHANNEL'], }, { id: message.author.id, allow: ['VIEW_CHANNEL'], }, ]; let channel = await guild.channels.create( `${message.author.username}-${message.author.discriminator}`, { parent: 'took out ID', topic: `Support for ${message.author.tag} | ID: ${message.author.id}`, permissionOverwrites, }, );O:
let permissionOverwrites = [ { id: message.guild.id, deny: ['VIEW_CHANNEL'], }, { id: message.author.id, allow: ['VIEW_CHANNEL'], }, ]; let channel = await guild.channels.create( `${message.author.username}-${message.author.discriminator}`, { parent: 'took out ID', topic: `Support for ${message.author.tag} | ID: ${message.author.id}`, permissionOverwrites, }, );let everyoneRole = message.guild.id; El rol de @everyone es el mismo que el del gremio.