我有一个消息编辑日志,但我想停止发送日志,如果一个暴徒消息被更新,我尝试了一些代码,如
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)
}如果更新了机器人消息,我将如何阻止它发送嵌入。
发布于 2021-02-20 23:49:57
做一个非常简单的检查就能解决这个问题。在Discord.js中有一个用户字段,它告诉您用户是否是机器人。
实际上,我们建议您在代码的"onMessage“部分中添加这一点,因为它阻止其他机器人使用您的机器人,这是为了确保所有事情都是安全的,并且不会出现回环/反馈,不管怎样,您都不希望恶意的bot利用您的bot,这也会给您的bot带来麻烦。
以下是你想要做的事;
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.)继续探索你能做什么!发展愉快!^ -^
发布于 2021-02-20 20:41:33
这真的很容易做到。您所需要做的就是检查消息的作者是否是机器人,然后返回if true。你就这样做
if (oldMessage.author.bot) return;https://stackoverflow.com/questions/66295916
复制相似问题