1 var _
= require('lodash');
6 var ClientCommands = function (client
) {
9 module
.exports
= ClientCommands
;
11 ClientCommands
.prototype.run = function (command
, args
, irc_connection
, callback
) {
12 // Do we have a function to handle this command?
13 if (!listeners
[command
.toUpperCase()]) {
17 return listeners
[command
.toUpperCase()](args
, irc_connection
, callback
);
24 PRIVMSG: function (args
, irc_connection
, callback
) {
29 global
.modules
.emit('client:commands:msg', data
);
31 if (args
.target
&& (args
.msg
)) {
32 // TODO: Enable plugin support here again
33 //obj = kiwi.kiwi_mod.run('msgsend', args, {websocket: websocket});
35 irc_connection
.write('PRIVMSG ' + args
.target
+ ' :' + args
.msg
, callback
);
41 CTCP: function (args
, irc_connection
, callback
) {
42 if ((args
.target
) && (args
.type
)) {
44 irc_connection
.write('PRIVMSG ' + args
.target
+ ' :' + String
.fromCharCode(1) + args
.type
.toUpperCase() + ' ' + args
.params
+ String
.fromCharCode(1), callback
);
46 irc_connection
.write('NOTICE ' + args
.target
+ ' :' + String
.fromCharCode(1) + args
.type
.toUpperCase() + ' ' + args
.params
+ String
.fromCharCode(1), callback
);
52 RAW: function (args
, irc_connection
, callback
) {
53 irc_connection
.write(args
.data
, callback
);
57 JOIN: function (args
, irc_connection
, callback
) {
59 channels
= args
.channel
.split(",");
60 keys
= (args
.key
) ? args
.key
.split(",") : [];
61 _
.each(channels
, function (chan
, index
) {
62 irc_connection
.write('JOIN ' + chan
+ ' ' + (keys
[index
] || ''), callback
);
68 PART: function (args
, irc_connection
, callback
) {
70 _
.each(args
.channel
.split(","), function (chan
) {
71 irc_connection
.write('PART ' + chan
, callback
);
77 TOPIC: function (args
, irc_connection
, callback
) {
80 irc_connection
.write('TOPIC ' + args
.channel
+ ' :' + args
.topic
, callback
);
82 irc_connection
.write('TOPIC ' + args
.channel
, callback
);
88 KICK: function (args
, irc_connection
, callback
) {
89 if ((args
.channel
) && (args
.nick
)) {
90 irc_connection
.write('KICK ' + args
.channel
+ ' ' + args
.nick
+ ':' + args
.reason
, callback
);
95 QUIT: function (args
, irc_connection
, callback
) {
96 websocket
.ircConnection
.end('QUIT :' + args
.message
+ '\r\n');
97 websocket
.sentQUIT
= true;
98 websocket
.ircConnection
.destroySoon();
99 websocket
.disconnect();
103 NOTICE: function (args
, irc_connection
, callback
) {
104 if ((args
.target
) && (args
.msg
)) {
105 irc_connection
.write('NOTICE ' + args
.target
+ ' :' + args
.msg
, callback
);
110 MODE: function (args
, irc_connection
, callback
) {
111 if ((args
.target
) && (args
.mode
)) {
112 irc_connection
.write('MODE ' + args
.target
+ ' ' + args
.mode
+ ' ' + args
.params
, callback
);
117 NICK: function (args
, irc_connection
, callback
) {
119 irc_connection
.write('NICK ' + args
.nick
, callback
);
124 KIWI: function (args
, irc_connection
, callback
) {
125 if ((args
.target
) && (args
.data
)) {
126 irc_connection
.write('PRIVMSG ' + args
.target
+ ': ' + String
.fromCharCode(1) + 'KIWI ' + args
.data
+ String
.fromCharCode(1), callback
);