javascript - Discord.js 错误“TypeError:channel.updateOverwrite 不是函数”
问题描述
当我尝试更改频道权限以锁定用户发送消息时,无论我做什么都会弹出此错误。
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 })
推荐阅读
- google-apps-script - 将 reddit 抓取的脚本执行时间延长到 5 分钟以上
- python - ConvergenceWarning: lbfgs 未能收敛 (status=1)
- php - 如何在我的 Laravel 项目中安装 PHP Statistics 扩展?
- c - Free():C 程序中的无效指针
- css - 当所有边的值都相同时,是否有必要使用逻辑属性?
- java - 将带有 List 的对象另存为 csv 文件 FlatFileItemWriter
- ruby-on-rails - Heroku 部署 - 无法加载此类文件 - rake (LoadError)
- php - 如何使用 wp_remote_post 发送图像(表单数据文件)?
- wordpress - 我们如何隐藏元素或弹出窗口的滚动条?
- python - Keras + TF | 导出当前 Epoch 分类失败的验证图像