summaryrefslogtreecommitdiff
path: root/lib
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 /lib
downloadbitraf-bot-218bc2bc31677fbcb326bcd88878c46fb39005b0.tar.gz
bitraf-bot-218bc2bc31677fbcb326bcd88878c46fb39005b0.tar.bz2
bitraf-bot-218bc2bc31677fbcb326bcd88878c46fb39005b0.tar.xz
bitraf-bot-218bc2bc31677fbcb326bcd88878c46fb39005b0.zip
o Initial import.
Diffstat (limited to 'lib')
-rw-r--r--lib/client.js84
1 files changed, 84 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;