Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有RegExp始终触发的if语句_Javascript_Regex_Twitch - Fatal编程技术网

Javascript 带有RegExp始终触发的if语句

Javascript 带有RegExp始终触发的if语句,javascript,regex,twitch,Javascript,Regex,Twitch,我正在开发一个twitch机器人,目前我正在尝试让机器人欢迎人们加入流,问题是,其中一个表情是“HeyGuys”,单独输入这个表情会触发他,因为有“hey”和“guys”,所以我想用regexp查看整个词来修复这个问题,但现在,它每次都会触发 代码如下: var welcomed; function checkWelcomeMsg(channel, msg, usr) { welcomed = false; for(var i = 0; i < welcome.length

我正在开发一个twitch机器人,目前我正在尝试让机器人欢迎人们加入流,问题是,其中一个表情是“HeyGuys”,单独输入这个表情会触发他,因为有“hey”和“guys”,所以我想用regexp查看整个词来修复这个问题,但现在,它每次都会触发

代码如下:

var welcomed;
function checkWelcomeMsg(channel, msg, usr) {
    welcomed = false;
    for(var i = 0; i < welcome.length; i++) {
        if(new RegExp('\\b' + welcome[i] + '\\b') && !welcomed) {
            for(var i = 0; i < chatNames.length; i++) {
                if(new RegExp('\\b' + chatNames[i] + '\\b')) {
                    console.log(getRandomResponse(greetings)+usr.username+"!");
                    welcomed = true;
                    console.log(welcomed);
                    break;
                }
            }
        }
    }
}
代码会查看所有包含“欢迎”和“聊天名称”两个词的消息,并从“问候语”中随机选择一个答案


每次我在chat中键入内容时,将console.log放在if语句之后,会显示“\bhi\b”和“\bchat\b”

我不会使用正则表达式,因为您可以使用该方法

你的代码有很多问题,你应该简化逻辑

你可以这样做

var-emotes=[“HeyGuys”,];
功能检查WelcomeMsg(频道、消息、usr){
var=false;
var usrMsg=msg.toLowerCase();
//把味精分开
var words=usrMsg.split(“”);
//检查消息是否包含表情
for(var i=0,len=words.length;i-1){
欢迎=真实;
打破
}
}
//如果没有表情
如果(!欢迎){
//检查消息中是否包含欢迎词
for(i=0,len=words.length;i-1){
欢迎=真实;
打破
}
}
//如果不返回
如果(!欢迎){
返回;
}
欢迎=错误;
//检查msg是否也包含任何聊天室名称
对于(i=0;i-1){
欢迎=真实;
打破
}
}
}
如果(欢迎){
log(getRandomResponse(问候)+usr.username+“!”);
}

}
您正在创建正则表达式对象,但没有对它们执行任何操作…未使用参数
msg
。如果不使用itOops,您如何检查其内容!在这两个函数中使用相同的变量
i
loops@Hacketo我在某处调用函数else@Mranth0ny62这不会改变函数不使用
msg
。你的函数只是忽略了你传入的消息。这是可行的,但HeyGuys不会触发它,他找到hey并停在那里,我想我必须使用.toLowerCase() somewhere@Mranth0ny62你的OP不是说“HeyGuys”不应该触发它吗?这段代码实际上把用户的句子分成了一个单词列表,所以“HeyGuys”不能触发“hey”和“guys”。关于
toLowerCase
I编辑我的代码,你获得了一个分数“HeyGuys”在欢迎列表中,因此如果有人键入“HeyGuys chat”,应该是triggered@Mranth0ny62嗯,我在这个数组中没有看到它。。由于任何“欢迎”字都必须与“chatNames”字一起使用,“HeyGuys”应该是一个例外,并且应该包含在另一个数组中,该数组将首先进行检查。我更新了密码
//Welcome; Thanks; Goodbye syntaxes
var welcome = ["hi", "hey", "hello", "o/", "HeyGuys", ];
var chatNames = ["chat", "everybody", "people", "everyone", "guys"];

//Responses
var greetings = ["Hello ", "HeyGuys ", "Hey "];