const net = require('net'); const myName = process.env['HUBOT_IRC_NICK']; module.exports = function(robot) { robot.brain.data.topics = {} // old stuff // lampel function setLampel(r,ge,gr) { var x = 0; if(r) x+=4; if(ge) x+=2; if(gr) x+=1; var command = "io set port 2 0"+x+"\n"; var client = net.createConnection({port: 2701, host: 'lampel.raum.ctdo.de'}, function() { client.end(command); }); } robot.respond(/rot$/i, function(r) { setLampel(1,0,0); }); robot.respond(/gruen$/i, function(r) { setLampel(0,0,1); }); robot.respond(/gelb$/i, function(r) { setLampel(0,1,0); }); robot.respond(/(all|alle|rotgelbgruen|gelbrotgruen|rotgruengelb|gelbgruenrot|gruenrotgelb|gruengelbrot)$/i, function(r) { setLampel(1,1,1); }); robot.respond(/(rotgelb|gelbrot)$/i, function(r) { setLampel(1,1,0); }); robot.respond(/(gruengelb|gelbgruen)$/i, function(r) { setLampel(0,1,1); }); robot.respond(/(rotgruen|gruenrot)$/i, function(r) { setLampel(1,0,1); }); robot.respond(/(aus|off)$/i, function(r) { setLampel(0,0,0); }); // topic robot.adapter.bot.addListener('topic', function(channel, topic) { robot.brain.data.topics[channel] = topic setTopic(channel, topic); }); function setTopic(channel, currentTopic) { robot.http("https://status.ctdo.de/api/simple/v2") .header('Accept', 'application/json') .get()(function(err, res, body) { var data = JSON.parse(body); var raum_offen = /(raum: |r: )(auf|offen|open)/ig; var raum_zu = /(raum: |r: )(zu|geschlossen|closed)/ig var currentState = data.state; var newTopic = currentTopic; if(currentTopic.match(raum_offen)) { // wenn raum auf drinsteht if(!data.state) { newTopic = currentTopic.replace(raum_offen, 'Raum: zu'); } } else if(currentTopic.match(raum_zu)) { // wenn raum zu drinsteht if(data.state) { newTopic = currentTopic.replace(raum_zu, 'Raum: auf'); } } else { // wenn nix drinsteht if(data.state) { newTopic = "Raum: auf | " + currentTopic; } else { newTopic = "Raum: zu | " + currentTopic; } } if(newTopic !== currentTopic) { robot.brain.data.topics[channel] = newTopic; robot.adapter.topic({room: channel}, newTopic); } }) } // topic interval setInterval(function() { var channels = process.env['HUBOT_IRC_ROOMS']; channels = channels.split(','); channels.forEach(function(c) { setTopic(c, robot.brain.data.topics[c]); }); }, 5000); // gem var gem = false; robot.respond(/gem$/i, function(r) { if(gem) { gem = false; r.reply("Gem Deactivated"); } else { gem = true; var c = Math.floor(Math.random() * 100) + 1; if(c>99) { r.reply('Mooooooooooooo!'); } else { r.reply("Gem Activated"); } } }); // status robot.respond(/(status|ls)$/i, function(r) { console.log("status"); robot.http("https://status.ctdo.de/api/simple/v2") .header('Accept', 'application/json') .get()(function(err, res, body) { var data = JSON.parse(body); if(data.names.length) return r.reply("Derzeit im Treff: " + data.names.join(', ')); r.reply("Ich erkenne niemanden im Treff."); }) }); // disco var discoInterval; function disco() { setLampel(Math.random() >= 0.5, Math.random() >= 0.5, Math.random() >= 0.5); } robot.respond(/(disco|disco ([0-9]{1,3}))$/i, function(r) { if(typeof(discoInterval) !== 'undefined') { clearInterval(discoInterval); // hebt den interval auf. return discoInterval = undefined; } if(r.match.length === 2) { console.log(parseInt(r.match[1])); setInterval(disco, r.match[1]); } else { setInterval(disco, 500); // 120bpm! } }); }