【问题标题】:Discord.js error "TypeError: channel.updateOverwrite is not a function"Discord.js 错误“TypeError:channel.updateOverwrite 不是函数”
【发布时间】: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 以查看它是否修复了它并最终使用该错误转储作为标题,我的错!

标签: javascript node.js discord discord.js


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2021-05-31
    • 2020-07-24
    • 2022-01-02
    • 2021-01-26
    • 2020-08-05
    • 1970-01-01
    • 2020-12-31
    • 2020-12-07
    • 2020-08-23
    相关资源
    最近更新 更多