Javascript 如何让discord bot读取嵌入

Javascript 如何让discord bot读取嵌入,javascript,discord,discord.js,Javascript,Discord,Discord.js,我了解discord机器人如何读取普通用户输入的消息并使用 if(message.content.toLowerCase().includes('cyber')) message.channel.send("Key Word Detected "); 但是如果是嵌入的,它将不会读取消息。请帮助我更改该设置,以便在嵌入消息中查找关键字,并从bot获取响应。应该是这样,同时检查消息中的所有嵌入 if(message.content.toLowerCase().includes('cyber

我了解discord机器人如何读取普通用户输入的消息并使用

if(message.content.toLowerCase().includes('cyber'))
    message.channel.send("Key Word Detected ");

但是如果是嵌入的,它将不会读取消息。请帮助我更改该设置,以便在嵌入消息中查找关键字,并从bot获取响应。

应该是这样,同时检查消息中的所有嵌入

if(message.content.toLowerCase().includes('cyber'))
    message.channel.send("Key Word Detected ");
else {
    for(var i = 0; i < message.embeds.length; i++) {
        if(message.embeds[i].title.includes("cyber") || message.embeds[i].title.includes("cyber")) {
            message.channel.send("Detected");
            break;
    }
}
if(message.content.toLowerCase().includes('cyber'))
message.channel.send(“检测到关键字”);
否则{
对于(var i=0;i中的文本可以在
作者
描述
页脚
消息.内容
标题
中。它们也可以在每个字段中,因此可能需要检查所有这些内容。
这里有一个可以使用的小函数(我知道它看起来很混乱,但这只是因为有很多逻辑运算符):

/*
消息{Discord.message}:要在其中搜索的消息
目标{string}:您正在查找的字符串
{
区分大小写{boolean}:是否希望搜索区分大小写
author{boolean}:是否要搜索作者的姓名
description{boolean}:是否要在描述中搜索
页脚{boolean}:是否要在页脚中搜索
标题{boolean}:是否要在标题中搜索
字段{boolean}:是否要在字段中搜索
}
*/
函数findInMessage(消息、目标、{
区分大小写=错误,
作者=假,
description=true,
footer=true,
title=true,
字段=真
}) {
如果(!target | |!message)返回null;
让str=caseSensitive?target:target.toLowerCase();
if((区分大小写&&message.content.includes(str))||
(!区分大小写&&message.content.toLowerCase().includes(str)))返回true;
for(让嵌入message.embeds){
如果((区分大小写&&(
(author&&embed.author.includes(str))||
(说明和嵌入.description.includes(str))||
(页脚和嵌入.footer.includes(str))||
(title&&embed.title.includes(str)))||
(!区分大小写&&(
(author&&embed.author.toLowerCase().includes(str))||
(description&&embed.description.toLowerCase().includes(str))||
(footer&&embed.footer.toLowerCase().includes(str))||
(title&&embed.title.toLowerCase().includes(str)))
)返回true;
如果(字段)
for(让字段为embed.fields){
if((区分大小写&&[field.name,field.value].includes(str))||
(!区分大小写&&[field.name.toLowerCase(),field.value.toLowerCase()].includes(str)))返回true;
}
}
返回false;
}
当找到输入的单词时,函数返回
true
;当找不到该单词时,函数返回
false
;当缺少一个非可选参数时,函数返回
null

您可以这样使用它:

if(findInMessage(message,'cyber'))message.channel.send(“检测到关键字”);

顶部有一些说明,希望对您有所帮助;)

听起来您是在要求为您编写代码。您能展示一下您在这些行中尝试更改的内容,并解释为什么它不起作用吗?也许可以链接您尝试处理的文档部分。我尝试将代码更改为
如果(embed.Message.content.toLowerCase().includes('cyber'))Message.channel.send(“检测到关键字”);
if(embed.content.toLowerCase().includes('cyber'))Message.channel.send(“检测到关键字”)
似乎什么都没用,我查找的所有内容似乎都没有解决我的问题的任何方法你确定embed.Message存在吗?对我来说,在查看之后,似乎embed是一个字段列表,所以我会做一些类似于
fields=Message.embed.fields;len=fields.length;对于范围内的变量I(len){if fields[I].value.contains('cyber')…