fix crashbug caused by using semicolons instead of commas and/or lack of require...
[KiwiIRC.git] / server / client-commands.js
CommitLineData
f3dbbd91
D
1var _ = require('underscore');\r
2\r
3\r
4\r
5\r
6var ClientCommandset = function (client) {\r
7 this.client = client;\r
8};\r
9module.exports.ClientCommandset = ClientCommandset;\r
10\r
11ClientCommandset.prototype.run = function (command, args, irc_connection, callback) {\r
12 // Do we have a function to handle this command?\r
13 if (!listeners[command.toUpperCase()]) {\r
14 return;\r
15 }\r
16\r
17 return listeners[command.toUpperCase()](args, irc_connection, callback);\r
18};\r
19\r
20\r
21\r
22\r
23var listeners = {\r
24 PRIVMSG: function (args, irc_connection, callback) {\r
25 if (args.target && (args.msg)) {\r
26 // TODO: Enable plugin support here again\r
27 //obj = kiwi.kiwi_mod.run('msgsend', args, {websocket: websocket});\r
28 //if (obj !== null) {\r
29 irc_connection.write('PRIVMSG ' + args.target + ' :' + args.msg, callback);\r
30 //}\r
31 }\r
32 },\r
33 \r
34\r
35 CTCP: function (args, irc_connection, callback) {\r
36 if ((args.target) && (args.type)) {\r
37 if (args.request) {\r
38 irc_connection.write('PRIVMSG ' + args.target + ' :' + String.fromCharCode(1) + args.type.toUpperCase() + ' ' + args.params + String.fromCharCode(1), callback);\r
39 } else {\r
40 irc_connection.write('NOTICE ' + args.target + ' :' + String.fromCharCode(1) + args.type.toUpperCase() + ' ' + args.params + String.fromCharCode(1), callback);\r
41 }\r
42 }\r
43 },\r
44\r
45\r
46 RAW: function (args, irc_connection, callback) {\r
47 irc_connection.write(args.data, callback);\r
48 },\r
49\r
50\r
51 JOIN: function (args, irc_connection, callback) {\r
52 if (args.channel) {\r
53 channels = args.channel.split(",");\r
54 keys = (args.key) ? args.key.split(",") : [];\r
55 _.each(channels, function (chan, index) {\r
56 irc_connection.write('JOIN ' + chan + ' ' + (keys[index] || ''), callback);\r
57 });\r
58 }\r
59 },\r
60\r
61\r
62 PART: function (args, irc_connection, callback) {\r
63 if (args.channel) {\r
64 _.each(args.channel.split(","), function (chan) {\r
65 irc_connection.write('PART ' + chan, callback);\r
66 });\r
67 }\r
68 },\r
69\r
70\r
71 TOPIC: function (args, irc_connection, callback) {\r
72 if (args.channel) {\r
73 if (args.topic) {\r
74 irc_connection.write('TOPIC ' + args.channel + ' :' + args.topic, callback);\r
75 } else {\r
76 irc_connection.write('TOPIC ' + args.channel, callback);\r
77 }\r
78 }\r
79 },\r
80\r
81\r
82 KICK: function (args, irc_connection, callback) {\r
83 if ((args.channel) && (args.nick)) {\r
84 irc_connection.write('KICK ' + args.channel + ' ' + args.nick + ':' + args.reason, callback);\r
85 }\r
86 },\r
87\r
88\r
89 QUIT: function (args, irc_connection, callback) {\r
90 websocket.ircConnection.end('QUIT :' + args.message + '\r\n');\r
91 websocket.sentQUIT = true;\r
92 websocket.ircConnection.destroySoon();\r
93 websocket.disconnect();\r
94 },\r
95\r
96\r
97 NOTICE: function (args, irc_connection, callback) {\r
98 if ((args.target) && (args.msg)) {\r
99 irc_connection.write('NOTICE ' + args.target + ' :' + args.msg, callback);\r
100 }\r
101 },\r
102\r
103\r
104 MODE: function (args, irc_connection, callback) {\r
105 if ((args.target) && (args.mode)) {\r
106 irc_connection.write('MODE ' + args.target + ' ' + args.mode + ' ' + args.params, callback);\r
107 }\r
108 },\r
109\r
110\r
111 NICK: function (args, irc_connection, callback) {\r
112 if (args.nick) {\r
113 irc_connection.write('NICK ' + args.nick, callback);\r
114 }\r
115 },\r
116\r
117\r
118 KIWI: function (args, irc_connection, callback) {\r
119 if ((args.target) && (args.data)) {\r
120 irc_connection.write('PRIVMSG ' + args.target + ': ' + String.fromCharCode(1) + 'KIWI ' + args.data + String.fromCharCode(1), callback);\r
121 }\r
122 }\r
123};\r