From 218bc2bc31677fbcb326bcd88878c46fb39005b0 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Wed, 2 May 2012 12:25:51 +0200 Subject: o Initial import. --- lib/client.js | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 lib/client.js (limited to 'lib') diff --git a/lib/client.js b/lib/client.js new file mode 100644 index 0000000..adbc25a --- /dev/null +++ b/lib/client.js @@ -0,0 +1,84 @@ +// 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') { + console.log('checkins request.'); + var now = new Date(); + var from = (now.getYear() + 1900) + "-" + (now.getMonth() + 1) + "-" + now.getDate(); + + var options = url.parse(config.checkinsUrl + '?from=' + from); + 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 () { + // console.log("chunks", chunks); + data = JSON.parse(chunks); + var checkins = -1; + _.each(data["collection"].items, function(item, i) { + _.each(item.data, function(item, i) { + if(item.name === "checkins") { + checkins = parseInt(item.value); + } + }); + }); + if(checkins != -1) { + irc.privmsg(to, 'checkins: ' + checkins); + } + else { + irc.privmsg(to, 'Could not find any checkins'); + } + }); + }).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; -- cgit v1.2.3