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 irc_connection
.write('PRIVMSG ' + args
.target
+ ' :' + args
.msg
, callback
);
31 CTCP: function (args
, irc_connection
, callback
) {
32 if ((args
.target
) && (args
.type
)) {
34 irc_connection
.write('PRIVMSG ' + args
.target
+ ' :' + String
.fromCharCode(1) + args
.type
.toUpperCase() + ' ' + args
.params
+ String
.fromCharCode(1), callback
);
36 irc_connection
.write('NOTICE ' + args
.target
+ ' :' + String
.fromCharCode(1) + args
.type
.toUpperCase() + ' ' + args
.params
+ String
.fromCharCode(1), callback
);
42 RAW: function (args
, irc_connection
, callback
) {
43 irc_connection
.write(args
.data
, callback
);
47 JOIN: function (args
, irc_connection
, callback
) {
49 channels
= args
.channel
.split(",");
50 keys
= (args
.key
) ? args
.key
.split(",") : [];
51 _
.each(channels
, function (chan
, index
) {
52 irc_connection
.write('JOIN ' + chan
+ ' ' + (keys
[index
] || ''), callback
);
58 PART: function (args
, irc_connection
, callback
) {
60 _
.each(args
.channel
.split(","), function (chan
) {
61 irc_connection
.write('PART ' + chan
, callback
);
67 TOPIC: function (args
, irc_connection
, callback
) {
70 irc_connection
.write('TOPIC ' + args
.channel
+ ' :' + args
.topic
, callback
);
72 irc_connection
.write('TOPIC ' + args
.channel
, callback
);
78 KICK: function (args
, irc_connection
, callback
) {
79 if ((args
.channel
) && (args
.nick
)) {
80 irc_connection
.write('KICK ' + args
.channel
+ ' ' + args
.nick
+ ':' + args
.reason
, callback
);
85 QUIT: function (args
, irc_connection
, callback
) {
86 websocket
.ircConnection
.end('QUIT :' + args
.message
+ '\r\n');
87 websocket
.sentQUIT
= true;
88 websocket
.ircConnection
.destroySoon();
89 websocket
.disconnect();
93 NOTICE: function (args
, irc_connection
, callback
) {
94 if ((args
.target
) && (args
.msg
)) {
95 irc_connection
.write('NOTICE ' + args
.target
+ ' :' + args
.msg
, callback
);
100 MODE: function (args
, irc_connection
, callback
) {
101 if ((args
.target
) && (args
.mode
)) {
102 irc_connection
.write('MODE ' + args
.target
+ ' ' + args
.mode
+ ' ' + args
.params
, callback
);
107 NICK: function (args
, irc_connection
, callback
) {
109 irc_connection
.write('NICK ' + args
.nick
, callback
);
114 KIWI: function (args
, irc_connection
, callback
) {
115 if ((args
.target
) && (args
.data
)) {
116 irc_connection
.write('PRIVMSG ' + args
.target
+ ': ' + String
.fromCharCode(1) + 'KIWI ' + args
.data
+ String
.fromCharCode(1), callback
);