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 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ main.js | 18 +++++++++++++ package.json | 36 +++++++++++++++++++++++++ 3 files changed, 138 insertions(+) create mode 100644 lib/client.js create mode 100644 main.js create mode 100644 package.json 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; diff --git a/main.js b/main.js new file mode 100644 index 0000000..13777fd --- /dev/null +++ b/main.js @@ -0,0 +1,18 @@ +var cmdopt = require('cmdopt') + , os = require('os') + , repl = require('repl') + , _ = require('underscore'); + +var parser = new cmdopt.Parser(); + +var config = { + channel: '#bitraf2', + checkinsUrl: 'http://hermes.bitraf.no/~trygvis/checkins.php', + nick: os.hostname() +}; + +var bot = require('./lib/client.js')(config); + +var r = repl.start('irc> '); +r.context.bot = bot; +r.context.config = config; diff --git a/package.json b/package.json new file mode 100644 index 0000000..498c473 --- /dev/null +++ b/package.json @@ -0,0 +1,36 @@ +{ + "author": { + "name": "Trygve Laugstøl", + "email": "trygvis@inamo.no", + "url": "https://github.com/trygvis" + }, + "name": "bitraf-irc-client", + "description": "Bitraf's IRC client", + "keywords": [ + "irc", + "chat" + ], + "version": "0.0.1", + "XXXhomepage": "https://github.com/", + "XXXrepository": { + "type": "git", + "url": "git://github.com/bleakgadfly/node-irc.git" + }, + "main": "main.js", + "engines": { + "node": ">=0.4.7" + }, + "dependencies": { + "node-irc": "https://github.com/einaros/node-irc/tarball/master", + "underscore": "1.3.3", + "cmdopt": "0.2.0" + }, + "devDependencies": {}, + "optionalDependencies": {}, + "licenses": [ + { + "type": "Apache Software License, version 2", + "url": "http://apache.org/licenses/LICENSE-2.0" + } + ] +} -- cgit v1.2.3