lirc
Version:
An old IRC client for node
125 lines (113 loc) • 2.92 kB
JavaScript
// Generated by CoffeeScript 1.12.7
(function() {
var clone, cluster, empty, lirc, merge, ref, toArray, typeOf;
lirc = require('./lirc');
cluster = require('cluster');
ref = lirc.utils, merge = ref.merge, clone = ref.clone, typeOf = ref.typeOf, empty = ref.empty, toArray = ref.toArray;
lirc.send = function() {
var msg, str, text;
if (!lirc.session.conn) {
return lirc.error('err', "lirc.commands, no lirc.session.conn");
}
text = toArray(arguments).join(' ');
text = lirc.format.substitute.vars(text);
str = text + '\r\n';
lirc.session.conn.write(str);
msg = {
cmd: 'SEND',
text: str,
time: new Date().getTime()
};
lirc.botnet.emit.master({
cmd: 'emit.web',
args: ['msg', [msg]]
});
return true;
};
lirc.auth = function(user) {
var userStr;
if (!user) {
user = lirc.session.server.user;
}
userStr = [user.username, user.hostname || user.username, user.server || user.username, ':' + user.realname].join(' ');
if (user.pass) {
lirc.send('PASS', user.pass);
}
lirc.send('NICK', user.nick);
return lirc.send('USER', userStr);
};
lirc.send.privmsg = function(target, text) {
if (text == null) {
text = '';
}
return lirc.send('PRIVMSG', target, ":" + text);
};
lirc.send.mode = function(target, text) {
if (!text) {
return false;
}
return lirc.send('MODE', target, text);
};
lirc.join = function(chans, chanKey) {
var chan, i, len, lists, text;
chans = chans || lirc.cfg.chans;
if (empty(chans)) {
return false;
}
if (typeOf(chans) === 'string') {
if (chanKey) {
chans = [[chans, chanKey]];
} else {
chans = [chans];
}
}
lists = {
chans: [],
keys: []
};
for (i = 0, len = chans.length; i < len; i++) {
chan = chans[i];
if (typeOf(chan) === 'array') {
lists.chans.push(chan[0]);
if (chan[1]) {
lists.keys.push(chan[1]);
}
} else {
lists.chans.push(chan);
}
}
text = lists.chans.join(',');
if (lists.keys) {
text += ' ' + lists.keys.join(',');
}
return lirc.send('JOIN', text);
};
lirc.part = function(chans) {
var chan, i, len, list, text;
chans = chans;
if (!chans) {
return false;
}
if (typeOf(chans) === 'string') {
chans = [chans];
}
list = [];
for (i = 0, len = chans.length; i < len; i++) {
chan = chans[i];
if (typeOf(chan) === 'array') {
list.push(chan[0]);
} else {
list.push(chan);
}
}
text = list.join(',');
return lirc.send('PART', text);
};
lirc.quit = function(message) {
if (message == null) {
message = 'lirc';
}
lirc.send('QUIT :' + message);
return lirc.session.conn.end();
};
}).call(this);