因此,在制作DiscordJS机器人时,我遇到了另一个问题。我正在尝试制作一个锁定频道功能,以防止用户通过更改@everyone的权限来在该频道中发送消息。发出命令时,您会提及频道,例如!lockchannel #general
。但这会产生错误:chan.updateOverwrite is not a function
。代码如下:
//...
// msg is the message object
if (msg.mentions.channels.first()) {
const chan = msg.mentions.channels.first()
const role = chan.guild.roles.find('name', 'everyone');
chan.updateOverwrite(role, { SEND_MESSAGES: false }).catch((error) => console.log(error))
} else {
msg.reply("You didn't mention a channel")
}
//...
我正在使用最新版本的Discord JS(12.4.0)
我怎样才能解决这个问题?在此先感谢:)
答案 0 :(得分:0)
//...
// msg is the message object
if (msg.mentions.channels.first()) {
const chan = msg.mentions.channels.first()
chan.updateOverwrite(msg.guild.id, { SEND_MESSAGES: false }).catch((error) => console.log(error))
} else {
msg.reply("You didn't mention a channel")
}
//...
要更新每个人的权限,只需使用公会的ID
答案 1 :(得分:0)
你只需要
message.channel.updateOverwrite(message.channel.guild.roles.everyone, { SEND_MESSAGES: false })
从定义的频道中替换 message.channel,你就大功告成了!