Bot 命令未按预期工作
Bot command isn't working as anticipated
我已经为此工作了 3 个小时的大部分时间,我即将放弃这部分,但我仍然想知道如何修复它。
免责声明-我是 node 新手,我仍在自学 js。这个机器人是我的第一个主要工作项目。
基本上我希望这个机器人根据所说的内容从数组中随机回答。
所以前 4 个数组是用户会说的话 + 机器人的名字。 (马科斯)
接下来的 5 个数组是机器人应随机选择的潜在响应。每个数组大约有 20 个响应,因此我不会包括响应。
如果前四个数组中的 none 个单词与 "Markos" 一起使用,则应使用 MENTION
数组。
现在,只有 MENTION
数组被访问,我不确定为什么。洞察力会很棒。如果你能指出我正确的地方 direction/explain 为什么我做的是错的,我将非常感激。
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)]);
}
}
包括预期的子字符串,而不是数组。
在您的程序中,您传递的是数组而不是子字符串。因此它将 return 一个虚假值,并将转到最后一个 else 子句 - 从 MENTION 数组打印。
如果要检查 message.content 是否包含数组中的任何字符串,则必须为其编写自定义逻辑。可以参考Javascript. Checking if string contains text from an array of substrings
我已经为此工作了 3 个小时的大部分时间,我即将放弃这部分,但我仍然想知道如何修复它。
免责声明-我是 node 新手,我仍在自学 js。这个机器人是我的第一个主要工作项目。
基本上我希望这个机器人根据所说的内容从数组中随机回答。
所以前 4 个数组是用户会说的话 + 机器人的名字。 (马科斯)
接下来的 5 个数组是机器人应随机选择的潜在响应。每个数组大约有 20 个响应,因此我不会包括响应。
如果前四个数组中的 none 个单词与 "Markos" 一起使用,则应使用 MENTION
数组。
现在,只有 MENTION
数组被访问,我不确定为什么。洞察力会很棒。如果你能指出我正确的地方 direction/explain 为什么我做的是错的,我将非常感激。
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)]);
}
}
包括预期的子字符串,而不是数组。
在您的程序中,您传递的是数组而不是子字符串。因此它将 return 一个虚假值,并将转到最后一个 else 子句 - 从 MENTION 数组打印。
如果要检查 message.content 是否包含数组中的任何字符串,则必须为其编写自定义逻辑。可以参考Javascript. Checking if string contains text from an array of substrings