annotate plugins/joke/joke.js @ 826:f85faf0f5d70

irccd: rename command to transport_command
author David Demelier <markand@malikania.fr>
date Tue, 08 Jan 2019 21:47:59 +0100
parents 06cc2f95f479
children a23b7b574ed2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
617
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * joke.js -- display some jokes
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
824
06cc2f95f479 misc: happy new year!
David Demelier <markand@malikania.fr>
parents: 773
diff changeset
4 * Copyright (c) 2013-2019 David Demelier <markand@malikania.fr>
617
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 // Plugin information.
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 info = {
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
21 name: "joke",
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
22 author: "David Demelier <markand@malikania.fr>",
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
23 license: "ISC",
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
24 summary: "display some jokes",
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
25 version: "@IRCCD_VERSION@"
617
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 };
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
27
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 // Modules.
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
29 var File = Irccd.File;
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
30 var Logger = Irccd.Logger;
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
31 var Plugin = Irccd.Plugin;
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
32 var Util = Irccd.Util;
617
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
33
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 Plugin.config["max-list-lines"] = 5;
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 Plugin.format["error"] = "#{nickname}: no jokes available";
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
36
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 /**
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 * Map of server/channel to list of jokes.
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 *
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 * Jokes consists of array of array of strings, they are printed line-per-line
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 * on the desired server/channel.
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 *
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 * This registry keeps track of jokes that were already printed to avoid sending
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 * the same joke over and over.
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 *
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 * It is implemented like this:
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 *
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 * ```json
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 * {
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 * "channel1@server1": [
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 * [
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 * "line 1 of joke 1"
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 * "line 2 of joke 1"
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 * ],
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 * [
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 * "line 1 of joke 2"
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 * "line 2 of joke 2"
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 * ]
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 * },
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 * "channel2@server2": [
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 * [
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 * "line 1 of joke 1"
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 * "line 2 of joke 1"
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 * ],
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 * [
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 * "line 1 of joke 2"
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 * "line 2 of joke 2"
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 * ]
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 * },
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 * };
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 * ```
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 */
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 var table = {};
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
74
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 /**
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 * Load the jokes for this server and channel.
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 *
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 * Jokes that are to big to fit into the max-list-lines parameter are discarded.
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 *
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 * \param server the server object
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 * \param channel the channel string
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 * \return a ready to use array of jokes
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 * \throw Error if
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 */
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 function load(server, channel)
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 {
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
87 var path = Plugin.config.file
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
88 ? Plugin.config.file
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
89 : Plugin.paths.data + "/jokes.json";
617
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
90
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
91 // Allow formatting to select different jokes per server/channel.
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
92 path = Util.format(path, {
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
93 server: server.toString(),
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
94 channel: channel
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
95 });
617
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
96
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
97 try {
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
98 var file = new File(path, "r");
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
99 var data = JSON.parse(file.read());
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
100 } catch (e) {
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
101 throw Error(path + ": " + e.message);
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
102 }
617
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
103
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
104 if (!data || !data.length)
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
105 throw Error(path + ": no jokes found");
617
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
106
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
107 // Ensure that jokes only contain strings.
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
108 var jokes = data.filter(function (joke) {
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
109 if (!joke || joke.length == 0 || joke.length > parseInt(Plugin.config["max-list-lines"]))
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
110 return false;
618
5afc0b3a9ad8 Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents: 617
diff changeset
111
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
112 for (var i = 0; i < joke.length; ++i)
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
113 if (typeof (joke[i]) !== "string")
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
114 return false;
618
5afc0b3a9ad8 Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents: 617
diff changeset
115
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
116 return true;
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
117 });
617
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
118
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
119 if (!jokes || jokes.length === 0)
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
120 throw Error(path + ": empty jokes");
617
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
121
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
122 return jokes;
617
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
123 }
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
124
618
5afc0b3a9ad8 Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents: 617
diff changeset
125 /**
5afc0b3a9ad8 Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents: 617
diff changeset
126 * Convert a pair server/channel into a unique identifier.
5afc0b3a9ad8 Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents: 617
diff changeset
127 *
5afc0b3a9ad8 Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents: 617
diff changeset
128 * \return channel@server
5afc0b3a9ad8 Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents: 617
diff changeset
129 */
617
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
130 function id(server, channel)
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
131 {
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
132 return channel + "@" + server.toString();
617
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
133 }
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
134
618
5afc0b3a9ad8 Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents: 617
diff changeset
135 /**
5afc0b3a9ad8 Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents: 617
diff changeset
136 * Show the joke in the specified channel.
5afc0b3a9ad8 Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents: 617
diff changeset
137 *
5afc0b3a9ad8 Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents: 617
diff changeset
138 * \warning this function does not check for max-list-lines parameter
5afc0b3a9ad8 Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents: 617
diff changeset
139 * \param server the server object
5afc0b3a9ad8 Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents: 617
diff changeset
140 * \param channel the channel string
5afc0b3a9ad8 Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents: 617
diff changeset
141 * \param joke the joke array (array of strings)
5afc0b3a9ad8 Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents: 617
diff changeset
142 */
617
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
143 function show(server, channel, joke)
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
144 {
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
145 for (var l = 0; l < joke.length; ++l)
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
146 server.message(channel, joke[l]);
617
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
147 }
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
148
618
5afc0b3a9ad8 Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents: 617
diff changeset
149 /**
5afc0b3a9ad8 Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents: 617
diff changeset
150 * Remove the joke from the table.
5afc0b3a9ad8 Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents: 617
diff changeset
151 *
5afc0b3a9ad8 Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents: 617
diff changeset
152 * \param i the server/channel identifier
5afc0b3a9ad8 Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents: 617
diff changeset
153 * \param index the joke index
5afc0b3a9ad8 Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents: 617
diff changeset
154 */
617
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
155 function remove(i, index)
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
156 {
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
157 table[i].splice(index, 1);
617
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
158
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
159 if (table[i].length == 0)
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
160 delete table[i];
617
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
161 }
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
162
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
163 function onCommand(server, origin, channel, message)
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
164 {
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
165 var i = id(server, channel);
617
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
166
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
167 if (!table[i]) {
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
168 Logger.debug("reloading for " + i);
617
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
169
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
170 try {
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
171 table[i] = load(server, channel);
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
172 } catch (e) {
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
173 Logger.warning(e.message);
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
174 server.message(channel, Util.format(Plugin.format.error, {
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
175 server: server.toString(),
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
176 channel: channel,
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
177 origin: origin,
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
178 nickname: Util.splituser(origin)
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
179 }));
617
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
180
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
181 return;
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
182 }
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
183 }
617
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
184
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
185 var index = Math.floor(Math.random() * table[i].length);
617
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
186
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
187 show(server, channel, table[i][index]);
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
188 remove(i, index);
617
241583937af0 Docs: recreate correctly files
David Demelier <markand@malikania.fr>
parents:
diff changeset
189 }
618
5afc0b3a9ad8 Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents: 617
diff changeset
190
5afc0b3a9ad8 Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents: 617
diff changeset
191 function onReload()
5afc0b3a9ad8 Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents: 617
diff changeset
192 {
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
193 // This will force reload of jokes on next onCommand.
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
194 table = {};
618
5afc0b3a9ad8 Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents: 617
diff changeset
195 }