UNPKG

squelch-client

Version:
124 lines (119 loc) 3.83 kB
// Generated by CoffeeScript 1.10.0 (function() { var getSender, userToLetter; getSender = require('../../util').getSender; userToLetter = function(users, letter) { return users.map(function() { return letter; }).join(''); }; module.exports = function() { return function(client) { client.mode = function(chan, modeStr) { return this.raw("MODE " + chan + " " + modeStr); }; client.ban = function(chan, hostmask) { return this.mode(chan, "+b " + hostmask); }; client.unban = function(chan, hostmask) { return this.mode(chan, "-b " + hostmask); }; client.op = function(chan, user) { var users; users = [].concat(user); return this.mode(chan, "+" + (userToLetter(users, 'o')) + " " + (users.join(' '))); }; client.deop = function(chan, user) { var users; users = [].concat(user); return this.mode(chan, "-" + (userToLetter(users, 'o')) + " " + (users.join(' '))); }; client.voice = function(chan, user) { var users; users = [].concat(user); return this.mode(chan, "+" + (userToLetter(users, 'v')) + " " + (users.join(' '))); }; client.devoice = function(chan, user) { var users; users = [].concat(user); return this.mode(chan, "-" + (userToLetter(users, 'v')) + " " + (users.join(' '))); }; return client._.internalEmitter.on('raw', function(reply) { var adding, c, chan, i, len, modes, param, params, sender, user; if (reply.command === 'MODE') { sender = getSender(reply); chan = reply.params[0]; if (!client.isChannel(chan)) { user = chan; } modes = reply.params[1]; if (reply.params.length > 2) { params = reply.params.slice(2); } adding = true; for (i = 0, len = modes.length; i < len; i++) { c = modes[i]; if (c === '+') { adding = true; continue; } if (c === '-') { adding = false; continue; } if (user == null) { param = void 0; if (client._.chanmodes[0].indexOf(c) !== -1 || client._.chanmodes[1].indexOf(c) !== -1 || (adding && client._.chanmodes[2].indexOf(c) !== -1) || (client._.prefix[c] != null)) { param = params.shift(); } if (adding) { client.emit('+mode', { chan: chan, sender: sender, mode: c, param: param }); } if (!adding) { client.emit('-mode', { chan: chan, sender: sender, mode: c, param: param }); } } else { if (adding) { client.emit('+usermode', { user: user, mode: c, sender: sender }); } if (!adding) { client.emit('-usermode', { user: user, mode: c, sender: sender }); } } } if (user == null) { return client.emit('mode', { chan: chan, sender: sender, mode: reply.params.slice(1).join(' ') }); } else { return client.emit('usermode', { user: user, sender: sender, mode: reply.params.slice(1).join(' ') }); } } }); }; }; }).call(this);