我正在尝试这样做,以便当一个人在聊天中键入特定的字符串时,它会查询我是否将他们的名字放入“播放器”变量中,如果是,则执行其余的脚本。如果不是,脚本将不会执行。
工作原理:
如果有其他人输入“!answer ????”它忽略了它们。
client.addListener('chat', function (channel, user, message) {
console.log(user.username + ': ' + message); // Posts message
var msg = message;
var Answerstate = 0;
var answer = '';
var GameStatus = 0;
var player;
var user = user.username;
if (msg.toLowerCase().indexOf("!ff") == 0) {
var parts = msg.split(" ");
if(parts.length > 1) {
parts.shift();
player = parts.join(" "); // define the player
client.say(channel, player + " wants to play Family Fortunes!");
GameStatus = 1;
console.log('Game initiliased. Set GameStatus:' + GameStatus);
console.log('Username: ' + player);
}
}
if (user == player) { // If I remove this if statement, it executes.
if (msg.toLowerCase().indexOf("!answer") == 0) {
if (Answerstate < 5) { //If Answerstate is less than 5
var parts = msg.split(" ");
if(parts.length > 1) {
Answerstate = Answerstate + 1; //Increase State
console.log('Answerstate ' + Answerstate);
parts.shift();
var answer = parts.join(" ");
io.emit('answer', answer); //If Answerstate > 5 then execute emit.
console.log('Going over to index.html | io.emit "answerState": ' + answer);
}
}
}
} else { console.log('Attempted answer by: ' + player) }
});
奇怪的是,它说attempted answer by: undefined
。即使我执行!ff
命令而不是!answer
,这可以在这里看到:
请你解释为什么这样做?
由于
答案 0 :(得分:0)
因为“player”是一个局部变量,每次执行该函数时都会重新初始化?将其声明移到功能之外,看看是否有帮助
将“if(player == user)”更改为“else if(player == user)”,以便如果消息以“!ff”开头,则不会说“尝试回答”。
“尝试回答”应该显示“用户”,而不是“玩家”
此外,还有关于“if answerState&gt; 5”的评论没有实现;我不知道你想在那里发生什么。
var GameStatus = 0;
var Answerstate = 0;
var player;
client.addListener('chat', function (channel, user, message) {
console.log(user.username + ': ' + message); // Posts message
var msg = message;
var answer = '';
var user = user.username;
if (msg.toLowerCase().indexOf("!ff") == 0) {
var parts = msg.split(" ");
if(parts.length > 1) {
parts.shift();
player = parts.join(" "); // define the player
client.say(channel, player + " wants to play Family Fortunes!");
GameStatus = 1;
console.log('Game initiliased. Set GameStatus:' + GameStatus);
console.log('Username: ' + player);
}
}
else if (user == player) {
if (msg.toLowerCase().indexOf("!answer") == 0) {
if (Answerstate < 5) { //If Answerstate is less than 5
var parts = msg.split(" ");
if(parts.length > 1) {
Answerstate = Answerstate + 1; //Increase State
console.log('Answerstate ' + Answerstate);
parts.shift();
var answer = parts.join(" ");
io.emit('answer', answer); //If Answerstate > 5 then execute emit.
console.log('Going over to index.html | io.emit "answerState": ' + answer);
}
}
}
}
else {
console.log('Attempted answer by: ' + user)
}
});