if语句与RegExp一起触发

时间:2015-07-28 13:47:00

标签: javascript regex 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;
                }
            }
        }
    }
}

以下是代码正在查看的数组:

//Welcome; Thanks; Goodbye syntaxes
var welcome = ["hi", "hey", "hello", "o/", "HeyGuys", ];
var chatNames = ["chat", "everybody", "people", "everyone", "guys"];

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

代码会查看包含“welcome”和“chatNames”字样的所有消息,并从“问候语”中选择一个随机答案

在每次我在聊天中输入内容时,if语句给我“\ bhi \ b”和“\ bchat \ b”后放入console.log

1 个答案:

答案 0 :(得分:1)

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

您的代码存在很多问题,您应该简化逻辑。

你可以做这样的事情

&#13;
&#13;
var emotes = ["HeyGuys", ];

function checkWelcomeMsg(channel, msg, usr){
    var welcomed = false;

    var usrMsg = msg.toLowerCase();
    // Split the msg 
    var words = usrMsg.split(" ");

    // check if the msg contains an emote
    for (var i = 0, len=words.length; i< len ; i++){
        if (emotes.indexOf(words[i]) > -1){
            welcomed = true;
            break;
        }
    }

    // If there is no emotes
    if (!welcomed){
        // check if the msg contains any of welcome words
        for ( i = 0, len=words.length; i < len ; i++){
            if (welcome.indexOf(words[i]) > -1){
                welcomed = true;
                break;
            }
        }

        // If not return
        if (!welcomed){
            return;
        }

        welcomed = false;
        // check if the msg contains any of the chatNames too
        for (i = 0; i < len ; i++){
            if (chatNames.indexOf(words[i]) > -1){
                welcomed = true;
                break;
            }
        }
    }

    if (welcomed){
        console.log(getRandomResponse(greetings)+usr.username+"!");
    }
}
&#13;
&#13;
&#13;

对于Twitch僵尸程序而言,我无法测试此代码,您应该小心使用此代码并对其进行测试。