summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2012-05-02 12:25:51 +0200
committerTrygve Laugstøl <trygvis@inamo.no>2012-05-02 12:26:26 +0200
commit218bc2bc31677fbcb326bcd88878c46fb39005b0 (patch)
tree598c2af7ca4f665789b8a17cc28577368f53687b
downloadbitraf-bot-218bc2bc31677fbcb326bcd88878c46fb39005b0.tar.gz
bitraf-bot-218bc2bc31677fbcb326bcd88878c46fb39005b0.tar.bz2
bitraf-bot-218bc2bc31677fbcb326bcd88878c46fb39005b0.tar.xz
bitraf-bot-218bc2bc31677fbcb326bcd88878c46fb39005b0.zip
o Initial import.
-rw-r--r--lib/client.js84
-rw-r--r--main.js18
-rw-r--r--package.json36
3 files changed, 138 insertions, 0 deletions
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"
+ }
+ ]
+}