Javascript Bot命令不是';他没有按预期工作

Javascript Bot命令不是';他没有按预期工作,javascript,arrays,node.js,discord.js,Javascript,Arrays,Node.js,Discord.js,我已经花了三个多小时在这上面了,我想把这部分扔掉,但我仍然想知道如何修复它 免责声明-我是node的新手,我还在自学js。这个机器人是我的第一个主要工作项目 基本上,我希望这个机器人根据所说的内容,从一个数组中随机回答 因此,前4个数组是用户会说的内容+机器人的名称。(马科斯) 接下来的5个数组是机器人应该随机选择的潜在响应。每个数组大约有20个响应,因此我不包括响应 如果前四个数组中没有一个单词与“Markos”一起使用,则应使用提及数组 现在,只有提到数组被访问,我不知道为什么。有洞察力就好

我已经花了三个多小时在这上面了,我想把这部分扔掉,但我仍然想知道如何修复它

免责声明-我是node的新手,我还在自学js。这个机器人是我的第一个主要工作项目

基本上,我希望这个机器人根据所说的内容,从一个数组中随机回答

因此,前4个数组是用户会说的内容+机器人的名称。(马科斯)

接下来的5个数组是机器人应该随机选择的潜在响应。每个数组大约有20个响应,因此我不包括响应

如果前四个数组中没有一个单词与“Markos”一起使用,则应使用
提及
数组

现在,只有
提到
数组被访问,我不知道为什么。有洞察力就好了。如果你能给我指出正确的方向/解释为什么我所做的是错的,我将非常感激

let posGreet = ["hi", "hello", "hey", "yo", "greetings", "hallo", "Grüße"]
let posBye = ["bye", "goodbye", "later", "peace", "cya", "see you later", "tschüss", "auf wiedersehen", "bis später"]
let posThanks = ["thanks", "thank you", "vielen dank", "danke", "gracias"]
let posInsults = ["insults"]

let GREETINGS = ["too many to list"]
let THANKS = ["too many to list"]
let BYE = ["too many to list"]
let MENTION = ["too many to list"]
let INSULTS = ["too many to list"]

else if (message.content.toLowerCase().includes("markos")) {
    if (message.content.toLowerCase().includes(posGreet)) {
      message.reply(GREETINGS[Math.floor(Math.random() * GREETINGS.length)]);
    } else if (message.content.toLowerCase().includes(posThanks)) {
      message.reply(THANKS[Math.floor(Math.random() * THANKS.length)]);
    } else if (message.content.toLowerCase().includes(posBye)) {
      message.reply(BYE[Math.floor(Math.random() * BYE.length)]);
    } else if (message.content.toLowerCase().includes(posInsults)) {
      message.reply(INSULTS[Math.floor(Math.random() * INSULTS.length)]);
    } else { 
      message.reply(MENTION[Math.floor(Math.random() * MENTION.length)]);
    }
  }

包括子字符串,而不是数组

在程序中,将数组传递给includes,而不是子字符串。因此,它将返回一个falsy值,并将转到最后一个else子句,它将从提及数组中打印

如果要检查message.content是否包含数组中的任何字符串,则必须为其编写自定义逻辑。你可以参考