如何让我的不和谐机器人检测嵌入的字段、标题字段和字段描述?

Posted

技术标签:

【中文标题】如何让我的不和谐机器人检测嵌入的字段、标题字段和字段描述?【英文标题】:How to make my discord bot to detect fields, title field and field description of embeds? 【发布时间】:2021-03-26 10:06:15 【问题描述】:

有一个机器人使用嵌入消息随机产生一个事件,我希望我的机器人检测到该嵌入并做出回应。下面的代码用于检测标题、嵌入的描述,但我不知道如何让它检测标题字段或字段描述。

client.on('message', (message) => 
  if (message && message.embeds) 

    for (var i = 0; i < message.embeds.length; i++) 
      if (
        message.embeds[i].description && 
        message.embeds[i].description.includes("arena event")) 
      
        message.channel.send('<@&721372445457645579> JOIN!')
      
    

  
);

【问题讨论】:

【参考方案1】:

MessageEmbed 类中,您可以拥有fields 属性-

 message.embeds[i].fields[0].name
 message.embeds[i].fields[0].value

【讨论】:

我按照你的说法更改了代码client.on('message', (message) =&gt; if (message &amp;&amp; message.embeds) for (var i = 0; i &lt; message.embeds.length; i++) if ( message.embeds[i].fields[0].name &amp;&amp; message.embeds[i].fields[0].name.includes("arena event")) message.channel.send('&lt;@&amp;721372445457645579&gt; JOIN!') ); 它可以工作,但一段时间后给我这个错误 TypeError: Cannot read property 'name' or undefined 表示没有字段 试试这个 - client.on('message', (message) =&gt; if (message &amp;&amp; message.embeds) for (var i = 0; i &lt; message.embeds.length; i++) if ( message.embeds[i].fields.length &amp;&amp; message.embeds[i].fields[0].name.includes("arena event")) message.channel.send('&lt;@&amp;721372445457645579&gt; JOIN!') );

以上是关于如何让我的不和谐机器人检测嵌入的字段、标题字段和字段描述?的主要内容,如果未能解决你的问题,请参考以下文章

如何让我的不和谐机器人回复“跟进”消息

如何让我的不和谐机器人响应没有前缀的消息

如何使用 discord.py 使用我的不和谐机器人编辑嵌入颜色

如何让我的不和谐机器人只读取某个频道中的内容

发送某些单词时如何让我的不和谐机器人发送附件

如何让我的不和谐机器人加入用户所在的 vc?