如何在Discord JS中检测嵌入消息中的特定单词

问题描述

我正在尝试为服务器中的“ EPIC RPG”播放器制作一个提醒机器人,有一个事件由“ EPIC RPG”人员随机主持,因此,如果有事件,我决定制作一个公告机器人。

这是我的代码

client.on('message',message => { 
  let embed = message.embeds[0];
  if (embed) {  
  message.channel.send( "<@&734426095759130674>" +"\:moneybag:" + "**CATCH**" + "\:moneybag:" );
  }
  });
@H_404_7@

您可以看到我的命令是在每个机器人发出的每条嵌入消息上触发的,我想要的只是由“ EPIC RPG”机器人(例如“ IT'S RAINING COINS ”)中的特定字词触发像下面的图片一样,有什么想法吗?

this is the image

解决方法

您可以使用embed.title来获取嵌入标题,该标题表示正在下雨硬币。

您还可以通过embed.description获得其他信息,例如描述。 Discord.js MessageEmbed Docs
您可以使用以下方式检查嵌入信息:

client.on('message',message => { 
  let embed = message.embeds[0];
  if (embed && embed.title.includes('IT\'S RAINING COINS')) {  
   message.channel.send( "<@&734426095759130674>" +"\:moneybag:" + "**CATCH**" + "\:moneybag:" );
  }
});
,

您可以对字段进行排序,并检查它是否在其中一个字段中。

  const embed = message.embeds[0];
  if(!embed) return;
  let foundText = false;
  embed.fields.forEach(f => {
     if(f.name.includes('IT\'S RAINING COINS')) foundText = true;
  });
  if (embed && embed.title.includes('IT\'S RAINING COINS')) {  
   message.channel.send( "<@&734426095759130674>" +"\:moneybag:" + "**CATCH**" + "\:moneybag:" );
  }