不和谐.js错误"TypeError: channel.updateOverwrite is not a function"



当我试图更改通道权限以锁定用户发送消息时,无论我做什么,都会弹出此错误。

TypeError:channel.updateOverwrite不是函数

有什么问题吗?

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(() => {})
}
}

看起来您使用的是discord.js v13,但使用的是一些旧代码。在v13中删除了channel#updateOverwrite()方法,而在以前的版本中,channel#permissionOverwrites是覆盖的集合,而在v13则是PermissionOverwriteManager。这意味着,你应该使用它的.edit()方法来更新覆盖:

await channel
.permissionOverwrites.edit(message.guild.id, { SEND_MESSAGES: false })
await channel
.permissionOverwrites.edit(role, { SEND_MESSAGES: false })

最新更新