diff --git a/ym.js b/ym.js index 7ce4a9f..7699985 100644 --- a/ym.js +++ b/ym.js @@ -1,5 +1,6 @@ var YahooMessenger = require("yahoomessenger"); var striptags = require('striptags'); +var sleep = require('sleep'); var db = require('./db.js'); var oldMessages = []; @@ -31,7 +32,13 @@ function insertMessages(db_connection, logger_id, direction, partner, message, s function pm(destination, message) { logger.info("Sending to " + destination + ": " + message); - YahooMessenger.sendPM(destination, message); + try { + YahooMessenger.sendPM(destination, message); + } + catch (err) { + logger.info("Error sending message: " + err.message); + relogin(); + } } @@ -54,8 +61,14 @@ var keepAliveTimer; var _keepAliveLoop = function() { logger.info('Keep alive loop'); - YahooMessenger.keepAlive(); - keepAliveLoop(); + try { + YahooMessenger.keepAlive(); + keepAliveLoop(); + } + catch (err) { + logger.info("Error when sending keepalive: " + err.message); + relogin(); + } } function isAdmin(user) { @@ -75,12 +88,24 @@ function login(){ function logout() { logger.info("Logout from YM"); + clearTimeout(keepAliveTimer); - YahooMessenger.logout(); + + try { + YahooMessenger.logout(); + } + catch(err) { + logger.info("Error on logout: " + err.message); + } } function relogin() { + logger.info("Going to relogin"); logout(); + + logger.info("Sleeping 5 seconds before login"); + sleep.sleep(5); + YahooMessenger.newInstance(); }