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
) {
25 if (args
.target
&& (args
.msg
)) {
26 // TODO: Enable plugin support here again
27 //obj = kiwi.kiwi_mod.run('msgsend', args, {websocket: websocket});
29 irc_connection
.write('PRIVMSG ' + args
.target
+ ' :' + args
.msg
, callback
);
35 CTCP: function (args
, irc_connection
, callback
) {
36 if ((args
.target
) && (args
.type
)) {
38 irc_connection
.write('PRIVMSG ' + args
.target
+ ' :' + String
.fromCharCode(1) + args
.type
.toUpperCase() + ' ' + args
.params
+ String
.fromCharCode(1), callback
);
40 irc_connection
.write('NOTICE ' + args
.target
+ ' :' + String
.fromCharCode(1) + args
.type
.toUpperCase() + ' ' + args
.params
+ String
.fromCharCode(1), callback
);
46 RAW: function (args
, irc_connection
, callback
) {
47 irc_connection
.write(args
.data
, callback
);
51 JOIN: function (args
, irc_connection
, callback
) {
53 channels
= args
.channel
.split(",");
54 keys
= (args
.key
) ? args
.key
.split(",") : [];
55 _
.each(channels
, function (chan
, index
) {
56 irc_connection
.write('JOIN ' + chan
+ ' ' + (keys
[index
] || ''), callback
);
62 PART: function (args
, irc_connection
, callback
) {
64 _
.each(args
.channel
.split(","), function (chan
) {
65 irc_connection
.write('PART ' + chan
, callback
);
71 TOPIC: function (args
, irc_connection
, callback
) {
74 irc_connection
.write('TOPIC ' + args
.channel
+ ' :' + args
.topic
, callback
);
76 irc_connection
.write('TOPIC ' + args
.channel
, callback
);
82 KICK: function (args
, irc_connection
, callback
) {
83 if ((args
.channel
) && (args
.nick
)) {
84 irc_connection
.write('KICK ' + args
.channel
+ ' ' + args
.nick
+ ':' + args
.reason
, callback
);
89 QUIT: function (args
, irc_connection
, callback
) {
90 websocket
.ircConnection
.end('QUIT :' + args
.message
+ '\r\n');
91 websocket
.sentQUIT
= true;
92 websocket
.ircConnection
.destroySoon();
93 websocket
.disconnect();
97 NOTICE: function (args
, irc_connection
, callback
) {
98 if ((args
.target
) && (args
.msg
)) {
99 irc_connection
.write('NOTICE ' + args
.target
+ ' :' + args
.msg
, callback
);
104 MODE: function (args
, irc_connection
, callback
) {
105 if ((args
.target
) && (args
.mode
)) {
106 irc_connection
.write('MODE ' + args
.target
+ ' ' + args
.mode
+ ' ' + args
.params
, callback
);
111 NICK: function (args
, irc_connection
, callback
) {
113 irc_connection
.write('NICK ' + args
.nick
, callback
);
118 KIWI: function (args
, irc_connection
, callback
) {
119 if ((args
.target
) && (args
.data
)) {
120 irc_connection
.write('PRIVMSG ' + args
.target
+ ': ' + String
.fromCharCode(1) + 'KIWI ' + args
.data
+ String
.fromCharCode(1), callback
);