我在标题上遇到了同样的问题,但是得到了解决方案,在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”
答案 0 :(得分:1)
从documentation看,字段message.embeds
是MessageEmbed
对象的数组,这些对象由多个字段组成,包括字段description
。
文档中值得关注的部分是字段的类型。这里的字段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');
}