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”
为啥运行 app.js 显示错误:找不到模块'discord.js'