NodeJS逻辑错误?程序在执行一部分后立即停止?
NodeJS Logic Error? Program Stops as Soon as part of it is Executed?
我是 NodeJS 的新手,很抱歉 :( 但你必须从某个地方开始。无论如何,我正在编辑我试图完成的代码,当我试图制作我的一个时遇到了挑战命令(这是一个机器人)工作。这是不起作用的代码:/
steamFriends.on('friendMsg', (id, msg) => {
if (msg == '') {}
else {
LOG(id + ' sent me ' + '"' + msg + '"')
}
if (config.get('admins').indexOf(id) == -1) return;
if (msg.indexOf('!price') == 0) {
var match = msg.match(/!price (director|audition) ([\.0-9]+)/);
if (!match) steamFriends.sendMessage(id, 'Usage: !price <director or audtion> <price> (e.g. !price director 3.77)');
else {
steamFriends.sendMessage(id, 'Successfully set price of '+match[1] + ' reels to '+match[2] + '!');
PRICES[match[1] == 'audition' ? 0 : 1] = parseFloat(match[2]);
changePrices();
}
}
else if(msg.indexOf('!changestate') == 0) {
var match = msg.match(/!changestate (Online|Offline|Away|Busy|LookingToTrade|LookingToPlay|Snooze)/);
LOG(match);
LOG(match[1]);
if (!match)
steamFriends.sendMessage(id, '!changestate <state> (Online, Offline, Away, LookingToTrade, Busy, LookingToPlay, Snooze)');
var state = match[1]
if (match)
steamFriends.setPersonaState(Steam.EPersonaState.state)
}
});
所以上面的部分可以,但是下面的部分不行。底部是 else if 语句,应该由关键字 !changestate 触发。顶部(起作用的部分)是由 !price 触发的部分。
示例:当我尝试执行 !changestate Away 时,应该执行为 steamFriends.setPersonaState(Steam.EpersonaState.Away) 代码不会 return 错误,它会记录“!changestate离开,离开”,在下一行,只是 "Away"。我不确定这是逻辑错误还是我的代码中的其他错误:/
我已经让它记录了匹配和匹配[1]以进行调试,但似乎没有任何帮助。
谢谢大家的帮助,我真的很感激。
在你的代码末尾你有
steamFriends.setPersonaState(Steam.EPersonaState.state)
此处未使用您的 'state' 变量。我怀疑你会更幸运,比如
switch(state.toLowerCase()) {
case 'away':
steamFriends.setPersonaState(Steam.EPersonaState.Away);
break;
case 'online':
steamFriends.setPersonaState(Steam.EPersonaState.Online);
break;
// etc...
}
我是 NodeJS 的新手,很抱歉 :( 但你必须从某个地方开始。无论如何,我正在编辑我试图完成的代码,当我试图制作我的一个时遇到了挑战命令(这是一个机器人)工作。这是不起作用的代码:/
steamFriends.on('friendMsg', (id, msg) => {
if (msg == '') {}
else {
LOG(id + ' sent me ' + '"' + msg + '"')
}
if (config.get('admins').indexOf(id) == -1) return;
if (msg.indexOf('!price') == 0) {
var match = msg.match(/!price (director|audition) ([\.0-9]+)/);
if (!match) steamFriends.sendMessage(id, 'Usage: !price <director or audtion> <price> (e.g. !price director 3.77)');
else {
steamFriends.sendMessage(id, 'Successfully set price of '+match[1] + ' reels to '+match[2] + '!');
PRICES[match[1] == 'audition' ? 0 : 1] = parseFloat(match[2]);
changePrices();
}
}
else if(msg.indexOf('!changestate') == 0) {
var match = msg.match(/!changestate (Online|Offline|Away|Busy|LookingToTrade|LookingToPlay|Snooze)/);
LOG(match);
LOG(match[1]);
if (!match)
steamFriends.sendMessage(id, '!changestate <state> (Online, Offline, Away, LookingToTrade, Busy, LookingToPlay, Snooze)');
var state = match[1]
if (match)
steamFriends.setPersonaState(Steam.EPersonaState.state)
}
});
所以上面的部分可以,但是下面的部分不行。底部是 else if 语句,应该由关键字 !changestate 触发。顶部(起作用的部分)是由 !price 触发的部分。
示例:当我尝试执行 !changestate Away 时,应该执行为 steamFriends.setPersonaState(Steam.EpersonaState.Away) 代码不会 return 错误,它会记录“!changestate离开,离开”,在下一行,只是 "Away"。我不确定这是逻辑错误还是我的代码中的其他错误:/
我已经让它记录了匹配和匹配[1]以进行调试,但似乎没有任何帮助。
谢谢大家的帮助,我真的很感激。
在你的代码末尾你有
steamFriends.setPersonaState(Steam.EPersonaState.state)
此处未使用您的 'state' 变量。我怀疑你会更幸运,比如
switch(state.toLowerCase()) {
case 'away':
steamFriends.setPersonaState(Steam.EPersonaState.Away);
break;
case 'online':
steamFriends.setPersonaState(Steam.EPersonaState.Online);
break;
// etc...
}