summaryrefslogtreecommitdiff
path: root/lib/panda.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/panda.js')
-rw-r--r--lib/panda.js94
1 files changed, 94 insertions, 0 deletions
diff --git a/lib/panda.js b/lib/panda.js
new file mode 100644
index 0000000..906aeb5
--- /dev/null
+++ b/lib/panda.js
@@ -0,0 +1,94 @@
+
+var irc = require('irc')
+var async = require('async')
+
+var TASK_DELAY = 800
+
+var panda = {}
+
+var client = panda.client = new irc.Client( 'irc.jollo.org', process.env.IRC_NICK, {
+ userName: process.env.IRC_NAME,
+ realName: process.env.IRC_REALNAME,
+ port: 9999,
+ localAddress: null,
+ debug: false,
+ showErrors: false,
+ autoRejoin: false,
+ autoConnect: true,
+ channels: ["#sally"],
+ secure: true,
+ selfSigned: true,
+ certExpired: false,
+ floodProtection: false,
+ floodProtectionDelay: 1000,
+ sasl: false,
+ retryCount: 10,
+ retryDelay: 2000,
+ stripColors: false,
+ channelPrefixes: "&#",
+ messageSplit: 512,
+ encoding: ''
+})
+
+panda.query = function(msg, cb){
+ message_queue.push({
+ msg: msg,
+ cb: cb,
+ })
+}
+
+process.on('uncaughtException', function (err) {
+ client.disconnect()
+})
+
+var current_task
+var message_queue = async.queue(function(task, done){
+ current_task = task
+ current_task.response = []
+ current_task.timeout = 0
+ current_task.done = done
+ client.say("plinko", task.msg)
+}, 1)
+
+console.log("connecting..")
+
+client.addListener('registered', function (message) {
+ console.log("..registered!")
+})
+client.addListener('motd', function (motd) {
+ console.log("..got motd!")
+})
+client.addListener('error', function (err) {
+ console.log("..error!", err)
+})
+client.addListener('join', function (channel, nick, message) {
+ console.log("* " + nick + " joined " + channel)
+ if (nick == 'panda' && channel == '#sally') {
+ console.log("logging in..")
+ panda.query("login b1gb34rc4t", function(msg){
+ console.log("..logged in", msg)
+ panda.ready = true
+ })
+ }
+})
+client.addListener('pm', function (nick, text, message) {
+ if (! current_task) return
+ if (nick === "plinko") {
+ clearTimeout(current_task.timeout)
+ current_task.timeout = setTimeout(task_over, TASK_DELAY)
+ current_task.response.push(text)
+ }
+})
+
+function task_over (){
+ done = current_task.done
+ current_task.cb(current_task.response)
+ current_task.response = null
+ current_task.done = null
+ current_task.cb = null
+ current_task = null
+ done()
+}
+
+
+module.exports = panda