在JS中使用带有自定义参数的if语句

Using an if statement in JS with custom parameter

本文关键字:参数 自定义 if 语句 JS      更新时间:2023-09-26

我试图使它这样,当有人在消息中输入! familyfortunes% NAME%时,它将运行命令并从消息中获取参数(%NAME%),然后将其存储在一个变量中。

我想我可以使用if(message.toLowerCase.indexOf("!familyfortunes") !=-1){}并将$message存储到另一个变量中,但拆分以删除!familyfortune,因此它只保留用户名,但始终返回错误:

greatbritishbg: ! familyfortunlol [10:53:39]Undefined不是一个函数在零。(example.js: 68:29)

哪个是.split()部分

client.addListener('chat', function (channel, user, message) {
    console.log(user.username + ': ' + message);
    if (message.toLowerCase() === '!familyfortunes') { //If message contains !familyfortunes
        //var res = messageString.split("familyfortunes ");// Remove Family Fortunes to just get username
        client.say(channel, 'Latest Follower: ' + Follower.response);
        var raidName = Follower.response;
        io.emit('follow', raidName);
    }
}

任何关于我如何解决这个问题的建议都会很感激。谢谢。

你很接近了。注意toLowerCase是一个函数,所以你将我需要做message.toLowerCase().indexOf()。我不知道消息是否必须以命令开头,但我认为必须这样。简单的例子:

var msg = "!familyfortunes param1 param2";
if (msg.toLowerCase().indexOf("!familyfortunes") == 0) {
    var parts = msg.split(" ");
    if(parts.length > 1) {
        parts.shift();
        console.log(parts.join(" "));
    }
}

var parts = msg.split(" ")在空格上分割字符串并返回一个数组。msg.shift()删除数组中的第一个条目(!familyfortune),然后msg.join(" ")取数组的其余部分并构建一个字符串,以空格分隔。

如果在关键字后只允许一个值,则可以检查parts.lenght == 2并执行console.log(parts[1])以获得参数

您应该尝试使用regexp

var r =/!familyfortunes's+(.*)/i
var message = "!familyfortunes %NAME%"
message.match(r)
>> ["!familyfortunes %NAME%", "%NAME%"]

正则表达式匹配以!familyfortune开头的字符串,一个或多个空格,然后是命令的参数。第一组是命令的参数