如何不发送机器人消息编辑 discord.js

时间:2021-02-20 19:50:57

标签: discord.js

我有一个消息编辑日志,但我想在更新了一条消息时停止发送日志,我尝试了一些代码,例如

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)
  }

如果更新了机器人消息,我将如何阻止它发送嵌入内容。

2 个答案:

答案 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;