Skip to content

Instantly share code, notes, and snippets.

@tangentstorm
Created September 11, 2015 22:44
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save tangentstorm/7ecd327880fcb0df576e to your computer and use it in GitHub Desktop.
Save tangentstorm/7ecd327880fcb0df576e to your computer and use it in GitHub Desktop.
K5 bot for #learnprogramming and #jsoftware on freenode
// 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