Created
September 11, 2015 22:44
-
-
Save tangentstorm/7ecd327880fcb0df576e to your computer and use it in GitHub Desktop.
K5 bot for #learnprogramming and #jsoftware on freenode
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// An IRC bot for the k5 programming language, | |
// using oK from : https://github.com/JohnEarnest/ok | |
"use strict"; | |
var irc = require('irc'); | |
var ok = require('./ok/ok'); | |
const MAXLINES = 8; | |
var client = new irc.Client('irc.freenode.net', 'oK-bot', { | |
channels: ['#jsoftware', '#learnprogramming'] | |
}); | |
function runK(src) { | |
return ok.format(ok.run(ok.parse(src), ok.baseEnv())); | |
} | |
client.addListener('message', (from, to, msg)=> { | |
if (to.startsWith('#') && msg.startsWith('k ')) { | |
var result; | |
try { result = runK(msg.substring(2)); } | |
catch (err) { result = 'ERROR: ' + err.message; } | |
var line, lines = result.split("\n"); | |
for (var i=0; i<lines.length; i++) { | |
if (i >= MAXLINES && lines.length != MAXLINES) { | |
line = '...'; | |
break; | |
} else line = lines[i]; | |
client.say(to, `${from}: ${line}`); | |
} | |
} | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment