diff --git a/index.js b/index.js index 66f2022..9f3e26c 100644 --- a/index.js +++ b/index.js @@ -22,6 +22,23 @@ function isAdmin(user) { return (admins.indexOf(user) >= 0); } +function sendPM(destination, message) { + try { + logger.info("Sending to " + destination + ": " + message); + YahooMessenger.sendPM(destination, message); + } + catch (e) { + logger.info("Something wrong"); + logger.info(e); + logger.info("Try to reconnecting to yahoo messenger"); + YahooMessenger.login(config.yahoomessenger.username, config.yahoomessenger.password); + return false; + } + + return true; + +} + function broadcast(destinations, message, exclude) { var destinations = destinations.split(','); var destinationCount = destinations.length; @@ -32,8 +49,7 @@ function broadcast(destinations, message, exclude) { continue; } - logger.info('Sending message to ' + destination); - YahooMessenger.sendPM(destination, message); + sendPM(destination, message); } } @@ -44,8 +60,8 @@ var _keepAliveLoop = function() { YahooMessenger.keepAlive(); } catch(e) { - logger.error("Something wrong"); - logger.error(e); + logger.info("Something wrong"); + logger.info(e); logger.info("Try to reconnecting to yahoo messenger"); YahooMessenger.login(config.yahoomessenger.username, config.yahoomessenger.password); return; @@ -154,7 +170,7 @@ function onYmPM(data) { } logger.info('Forward to ' + target + ': ' + messageToForward); - YahooMessenger.sendPM(target, '@' + partner + ': ' + messageToForward); + sendPM(target, '@' + partner + ': ' + messageToForward); } else if (message.charAt(0) == '+') { target = message.split(' ', 1).join(); @@ -166,7 +182,7 @@ function onYmPM(data) { } logger.info('Clean forward to ' + target + ': ' + messageToForward); - YahooMessenger.sendPM(target, messageToForward); + sendPM(target, messageToForward); } }