无法读取未定义的不和谐嵌入的属性“包含”以检测表情符号

时间:2019-03-05 14:54:10

标签: javascript node.js discord.js

我在标题上遇到了同样的问题,但是得到了解决方案,在idk上我搞砸了这个。我正在尝试在嵌入中检测表情符号。

for (var i = 0; i < message.embeds.length; i++) {
    if (message.embeds[i] && message.embeds[i].description.includes("✨")) {
          console.log('Emoji detected');
          break;

        }
  }

谢谢。

我得到的错误是

if (message.embeds[i] && message.embeds[i].description.includes("✨")) {
                                                           ^

TypeError:无法读取未定义的属性“ includes”

1 个答案:

答案 0 :(得分:1)

documentation看,字段message.embedsMessageEmbed对象的数组,这些对象由多个字段组成,包括字段description

enter image description here

文档中值得关注的部分是字段的类型。这里的字段description具有类型?string?告诉您该字段可能不在此处。这就是循环中有错误的原因。您必须在尝试使用该字段之前检查该字段是否存在。


示例:

for (var i = 0; i < message.embeds.length; i++) {
    if (message.embeds[i] &&
        message.embeds[i].description &&
        message.embeds[i].description.includes('✨')) {
          console.log('Emoji detected');

          break;
    }
}

ES6中的示例:

if (message.embeds.some(x => x.description && x.description.includes('✨'))) {
   console.log('Emoji detected');
}