我有一个消息编辑日志,但我想停止发送日志,如果一个暴徒消息被更新,我尝试了一些代码,如
if(bot.oldMessage.content.edit()){
return;
}
显示错误
cannot read property 'edit' of undefined
我然后删除编辑,然后内容未定义。消息更新的代码如下:
module.exports = async (bot, oldMessage, newMessage) => {
let channels = JSON.parse(
fs.readFileSync('././database/messageChannel.json', 'utf8')
);
let channelId = channels[oldMessage.guild.id].channel;
let msgChannel = bot.channels.cache.get(channelId);
if (!msgChannel) {
return console.log(`No message channel found with ID ${channelId}`);
}
if (oldMessage.content === newMessage.content){
return;
}
let mEmbed = new MessageEmbed()
.setAuthor(oldMessage.author.tag, oldMessage.author.displayAvatarURL({dynamic: true}))
.setColor(cyan)
.setDescription(`**Message Editied in <#${oldMessage.channel.id}>**`)
.addField(`Before`, `${oldMessage.content}`)
.addField(`After`, `${newMessage.content}`)
.setFooter(`UserID: ${oldMessage.author.id}`)
.setTimestamp()
msgChannel.send(mEmbed)
}
如果bot消息更新了,我该如何阻止它发送嵌入
做一个非常简单的检查就可以解决这个问题。在Discord.js中有一个user字段,告诉你用户是否是bot。
事实上,建议你在onMessage"中添加这个。你的代码的一部分,因为它阻止其他机器人使用你的机器人,这是为了确保事情是安全的,没有循环/反馈发生,无论哪种方式,你都不希望一个恶意的机器人利用你的机器人,这也会让你的机器人陷入麻烦。
这是你想要做的;
if (message.author.bot) return;
这段代码的作用是检查消息的作者是否为bot,如果返回true,代码将停止运行,如果返回false,代码将继续运行。
你也可以这样做,如果你想只听机器人,只需在message.author.bot前添加一个感叹号,就像这样;
if (!message.author.bot) return;
也可以看到其他类型的信息保存,你可以打印任何东西到你的控制台。例如,如果您想查看消息对象包含的内容,可以使用;
将其打印到控制台中。console.log(message) // This will show everything within that object.
console.log(message.author) // This will show everything within the author object (like ID's, name, discriminators, avatars, etc.)
去探索你能做什么!发展中快乐!^ - ^
这很容易做到。您所需要做的就是检查消息的作者是否为bot,然后返回是否为true
。你可以这样做
if (oldMessage.author.bot) return;