问题描述
我正在尝试为服务器中的“ 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 ”)中的特定字词触发像下面的图片一样,有什么想法吗?
解决方法
您可以使用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:" ); }