繁体   English   中英

Bot命令未按预期运行

[英]Bot command isn't working as anticipated

我已经花了3个小时的大部分时间来进行这项工作,而我将把这部分扔掉,但是我仍然想知道如何解决它。

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

基本上,我希望该机器人根据所讲内容从数组中随机回答。

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

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

如果前四个数组中的所有单词均未与“ Markos”一起使用,则应使用MENTION数组。

现在,只有MENTION数组被访问,我不确定为什么。 洞察力会很棒。 如果您能指出正确的方向/解释我在做什么错了的原因,我将非常感激。

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)]);
    }
  }

包括期望的子字符串,而不是数组。

请参考String.prototype.includes()

在程序中,您正在将数组传递给include而不是子字符串。 因此它将返回一个伪造的值,并转到最后一个else子句-从MENTION数组打印。

如果要检查message.content是否包含数组中的任何字符串,则必须为其编写自定义逻辑。 您可以引用Javascript。 检查字符串是否包含子字符串数组中的文本

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM