Cuando trato de cambiar los permisos del canal para impedir que los usuarios envíen mensajes, aparece este error sin importar lo que haga.
TypeError: channel.updateOverwrite no es una función
¿Hay algo mal?
module.exports = { async execute(message, args) { const role = message.guild.roles.cache.find(r => r.name === '@everyone') let channel = message.mentions.channels.first() || args[0] if(!channel) channel = message.channel if(channel.permissionsFor(message.guild.id).has('SEND_MESSAGES') === false) return message.channel.send(`${channel} is already locked.`) await channel.updateOverwrite(message.guild.id, { SEND_MESSAGES: false }).catch(() => {}) // Line in which the error happens await channel.updateOverwrite(role, { SEND_MESSAGES: false} ).catch(() => {}) } }
Parece que estás usando discord.js v13 pero usando un código antiguo. En v13, el método channel#updateOverwrite()
se eliminó y mientras que en la versión anterior channel#permissionOverwrites
era una colección de overwrites , en v13 es un PermissionOverwriteManager
. Significa que debe usar su método .edit()
para actualizar las sobrescrituras:
await channel .permissionOverwrites.edit(message.guild.id, { SEND_MESSAGES: false }) await channel .permissionOverwrites.edit(role, { SEND_MESSAGES: false })