我有一个消息编辑日志,但我想在更新了一条消息时停止发送日志,我尝试了一些代码,例如
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)
}
如果更新了机器人消息,我将如何阻止它发送嵌入内容。
答案 0 :(得分:1)
进行非常简单的检查即可解决此问题。在 Discord.js 中有一个 user 字段,可以告诉您用户是否是机器人。
事实上,我们真的建议您将其添加到代码的“onMessage”部分,因为它会阻止其他机器人使用您的机器人,这是为了确保安全且不会发生环回/反馈,无论哪种方式,您不希望恶意机器人利用您的机器人,这也会给您的机器人带来麻烦。
这是你想要做的;
if (message.author.bot) return;
这段代码的具体作用是检查消息的作者是否是机器人,如果返回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.)
继续探索你能做什么! 快乐发展! ^-^
答案 1 :(得分:0)
这真的很容易做到。您需要做的就是检查消息的作者是否是机器人,然后如果 true
返回。你这样做
if (oldMessage.author.bot) return;