// var IRC = require('./IRC').IRC; var IRC = require('../node_modules/node-irc/IRC.js').IRC , irc = new IRC('irc.freenode.net', 6667) , url = require('url') , http = require('http') , _ = require('underscore'); var BitrafBot = function(config) { var nick = ''; var nickCount = 0; var nickAdditions = [ '', '^', '-', '_', '\\', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' ]; function findNick() { if (nickCount == nickAdditions.length) { nickCount = 0; } return config.nick + nickAdditions[nickCount++]; } nick = findNick(); irc.on('connected', function(server) { console.log('connected to ' + server); irc.join(config.channel, function(error) { irc.privmsg(config.channel, 'well hello yall'); }); }); irc.on('privmsg', function(from, to, message) { if(message == ',checkins') { var checkinsUrl = config.checkinsUrl console.log('checkins request. url=' + checkinsUrl); var options = url.parse(checkinsUrl); options.headers = { Accept: 'application/vnd.collection+json' }; options.method = 'GET'; var req = http.get(options, function(res) { var chunks = ''; res.on('data', function (chunk) { chunks += chunk; }); res.on('end', function () { try { data = JSON.parse(chunks); var checkins = -1; var lastCheckin = 'unknown'; _.each(data['collection'].items, function(item, i) { _.each(item.data, function(item, i) { switch(item.name) { case 'checkins': checkins = parseInt(item.value); break; case 'last-checkin': lastCheckin = item.value; break; } }); }); if(checkins != -1) { irc.privmsg(to, 'checkins: ' + checkins + ', last checkin: ' + lastCheckin); } else { irc.privmsg(to, 'Could not find any checkins'); } } catch(ex) { irc.privmsg(to, 'Could not parse document'); } }); }).on('error', function(e) { irc.privmsg(to, 'Problem with request: ' + e.message); }); } }); irc.on('ping', function(from) { console.log('ping from ' + from); irc.ping(from); }); irc.on('ping-reply', function(from, ms) { console.log('ping reply from ' + from + ': ' + ms + ' ms'); }); irc.on('errorcode', function(code) { if (code == 'ERR_NICKNAMEINUSE') { nick = findNick(); irc.nick(nick); } }); irc.connect(nick, 'The useful Bitraf bot', nick); process.on('exit', function () { irc.quit('bye'); }); } module.exports = BitrafBot;