Discord.js 错误“TypeError:channel.updateOverwrite 不是函数”

Posted

技术标签:

【中文标题】Discord.js 错误“TypeError:channel.updateOverwrite 不是函数”【英文标题】:Discord.js error "TypeError: channel.updateOverwrite is not a function" 【发布时间】:2021-12-24 04:58:37 【问题描述】:

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

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

【问题讨论】:

错误显示为overwritePermissions,但您的代码显示为updateOverwrite? 糟糕,我尝试了 overwritePermissions 以查看它是否修复了它并最终使用该错误转储作为标题,我的错! 【参考方案1】:

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

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

【讨论】:

以上是关于Discord.js 错误“TypeError:channel.updateOverwrite 不是函数”的主要内容,如果未能解决你的问题,请参考以下文章

错误“const Discord = require(discord.js) ^ ReferenceError: discord is not defined”

Discord.js 错误 - 找不到模块

为啥运行 app.js 显示错误:找不到模块'discord.js'

Discord.js 错误:它正在删除整个数组。 Quick.db 和 discord.js

Discord.js票务系统错误发送未定义错误

Discord.js 不发送消息(无错误)