我试图让它成为当有人输入时!familyfortunes%NAME%在消息中它将使用该命令运行并从消息中获取参数(%NAME%)然后将其存储在变量中
我以为我可以使用if(message.toLowerCase.indexOf("!familyfortunes") !=-1){}
并将$ message存储到另一个变量中,但拆分为删除!familyfortunes所以它只保留用户名但不断返回错误:
greatbritishbg:!familyfortunes lol [10:53:39]错误 - TypeError: undefined不是一个函数 在null。 (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);
}
}
任何关于如何解决这个问题的建议都将受到赞赏。感谢。
答案 0 :(得分:1)
你非常接近。请注意,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()
删除数组中的第一个条目(!familyfortunes),然后msg.join(" ")
获取数组的其余部分并构建一个以空格分隔的字符串。
如果您只在关键字后面允许一个值,则可以检查parts.lenght == 2
,然后执行console.log(parts[1])
以获取参数。
答案 1 :(得分:1)
您应该尝试使用正则表达式
var r =/!familyfortunes\s+(.*)/i
var message = "!familyfortunes %NAME%"
message.match(r)
>> ["!familyfortunes %NAME%", "%NAME%"]
正则表达式匹配以!familyfortunes开头的字符串,一个或多个空格,然后是命令的参数。第一组是命令的参数。