Fenris Wolf commited on 2016-05-13 11:03:38
Zeige 21 geänderte Dateien mit 1729 Einfügungen und 0 Löschungen.
| ... | ... |
@@ -0,0 +1,19 @@ |
| 1 |
+{
|
|
| 2 |
+ "servilo": "irc.freenode.net", |
|
| 3 |
+ "uzantnomo": "UZANTNOMO", |
|
| 4 |
+ "kromnomo": "KROMNOMO", |
|
| 5 |
+ "pasvorto": "PASVORTO", |
|
| 6 |
+ "administrantoj": [], |
|
| 7 |
+ "prokrasto": 500, |
|
| 8 |
+ "kanaloj": |
|
| 9 |
+ [ |
|
| 10 |
+ ], |
|
| 11 |
+ "kromajxoj": |
|
| 12 |
+ [ |
|
| 13 |
+ {"vojo": "fontoj/kromajxoj/kromajxo_ehxado.js", "aktiva": true}
|
|
| 14 |
+ ], |
|
| 15 |
+ "auxtolancxo": |
|
| 16 |
+ [ |
|
| 17 |
+ ] |
|
| 18 |
+} |
|
| 19 |
+ |
| ... | ... |
@@ -0,0 +1,35 @@ |
| 1 |
+/* |
|
| 2 |
+ |
|
| 3 |
+ IRC-Bot "Kvasir" |
|
| 4 |
+ Copyright (C) 2016 Fenris Wolf (fenris@folksprak.org) |
|
| 5 |
+ |
|
| 6 |
+ This program is free software: you can redistribute it and/or modify |
|
| 7 |
+ it under the terms of the GNU General Public License as published by |
|
| 8 |
+ the Free Software Foundation, either version 3 of the License, or |
|
| 9 |
+ (at your option) any later version. |
|
| 10 |
+ |
|
| 11 |
+ This program is distributed in the hope that it will be useful, |
|
| 12 |
+ but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 13 |
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 14 |
+ GNU General Public License for more details. |
|
| 15 |
+ |
|
| 16 |
+ You should have received a copy of the GNU General Public License |
|
| 17 |
+ along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 18 |
+ |
|
| 19 |
+*/ |
|
| 20 |
+ |
|
| 21 |
+ |
|
| 22 |
+/** |
|
| 23 |
+ * @author fenris |
|
| 24 |
+ */ |
|
| 25 |
+var cxeno_numero : int = 0; |
|
| 26 |
+ |
|
| 27 |
+ |
|
| 28 |
+/** |
|
| 29 |
+ * @author fenris |
|
| 30 |
+ */ |
|
| 31 |
+function cxeno_generi(prefikso : string = "") : string |
|
| 32 |
+{
|
|
| 33 |
+ return (prefikso + (cxeno_numero++).toString()); |
|
| 34 |
+} |
|
| 35 |
+ |
| ... | ... |
@@ -0,0 +1,24 @@ |
| 1 |
+/* |
|
| 2 |
+ |
|
| 3 |
+ IRC-Bot "Kvasir" |
|
| 4 |
+ Copyright (C) 2016 Fenris Wolf (fenris@folksprak.org) |
|
| 5 |
+ |
|
| 6 |
+ This program is free software: you can redistribute it and/or modify |
|
| 7 |
+ it under the terms of the GNU General Public License as published by |
|
| 8 |
+ the Free Software Foundation, either version 3 of the License, or |
|
| 9 |
+ (at your option) any later version. |
|
| 10 |
+ |
|
| 11 |
+ This program is distributed in the hope that it will be useful, |
|
| 12 |
+ but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 13 |
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 14 |
+ GNU General Public License for more details. |
|
| 15 |
+ |
|
| 16 |
+ You should have received a copy of the GNU General Public License |
|
| 17 |
+ along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 18 |
+ |
|
| 19 |
+*/ |
|
| 20 |
+ |
|
| 21 |
+type int = number; |
|
| 22 |
+ |
|
| 23 |
+declare var require; |
|
| 24 |
+ |
| ... | ... |
@@ -0,0 +1,97 @@ |
| 1 |
+/* |
|
| 2 |
+ |
|
| 3 |
+ IRC-Bot "Kvasir" |
|
| 4 |
+ Copyright (C) 2016 Fenris Wolf (fenris@folksprak.org) |
|
| 5 |
+ |
|
| 6 |
+ This program is free software: you can redistribute it and/or modify |
|
| 7 |
+ it under the terms of the GNU General Public License as published by |
|
| 8 |
+ the Free Software Foundation, either version 3 of the License, or |
|
| 9 |
+ (at your option) any later version. |
|
| 10 |
+ |
|
| 11 |
+ This program is distributed in the hope that it will be useful, |
|
| 12 |
+ but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 13 |
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 14 |
+ GNU General Public License for more details. |
|
| 15 |
+ |
|
| 16 |
+ You should have received a copy of the GNU General Public License |
|
| 17 |
+ along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 18 |
+ |
|
| 19 |
+*/ |
|
| 20 |
+ |
|
| 21 |
+ |
|
| 22 |
+/** |
|
| 23 |
+ * @author fenris |
|
| 24 |
+ */ |
|
| 25 |
+class klaso_vico<tipo_elemento> |
|
| 26 |
+{
|
|
| 27 |
+ |
|
| 28 |
+ /** |
|
| 29 |
+ * @author fenris |
|
| 30 |
+ */ |
|
| 31 |
+ protected elementoj : Array<tipo_elemento>; |
|
| 32 |
+ |
|
| 33 |
+ |
|
| 34 |
+ /** |
|
| 35 |
+ * @author fenris |
|
| 36 |
+ */ |
|
| 37 |
+ public constructor(elementoj : Array<tipo_elemento> = []) |
|
| 38 |
+ {
|
|
| 39 |
+ this.elementoj = new Array<tipo_elemento>(); |
|
| 40 |
+ this.elementoj = this.elementoj.concat(elementoj); |
|
| 41 |
+ } |
|
| 42 |
+ |
|
| 43 |
+ |
|
| 44 |
+ /** |
|
| 45 |
+ * @author fenris |
|
| 46 |
+ */ |
|
| 47 |
+ public doni(elemento : tipo_elemento) : void |
|
| 48 |
+ {
|
|
| 49 |
+ this.elementoj.push(elemento); |
|
| 50 |
+ } |
|
| 51 |
+ |
|
| 52 |
+ |
|
| 53 |
+ /** |
|
| 54 |
+ * @author fenris |
|
| 55 |
+ */ |
|
| 56 |
+ public grando() : int |
|
| 57 |
+ {
|
|
| 58 |
+ return this.elementoj.length; |
|
| 59 |
+ } |
|
| 60 |
+ |
|
| 61 |
+ |
|
| 62 |
+ /** |
|
| 63 |
+ * @author fenris |
|
| 64 |
+ */ |
|
| 65 |
+ public malplena() : boolean |
|
| 66 |
+ {
|
|
| 67 |
+ return (this.grando() == 0); |
|
| 68 |
+ } |
|
| 69 |
+ |
|
| 70 |
+ |
|
| 71 |
+ /** |
|
| 72 |
+ * @author fenris |
|
| 73 |
+ */ |
|
| 74 |
+ public legi() : tipo_elemento |
|
| 75 |
+ {
|
|
| 76 |
+ return (this.malplena() ? null : this.elementoj[0]); |
|
| 77 |
+ } |
|
| 78 |
+ |
|
| 79 |
+ |
|
| 80 |
+ /** |
|
| 81 |
+ * @author fenris |
|
| 82 |
+ */ |
|
| 83 |
+ public preni() : tipo_elemento |
|
| 84 |
+ {
|
|
| 85 |
+ if (this.malplena()) |
|
| 86 |
+ {
|
|
| 87 |
+ return null; |
|
| 88 |
+ } |
|
| 89 |
+ else |
|
| 90 |
+ {
|
|
| 91 |
+ let areo : Array<tipo_elemento> = this.elementoj.splice(0, 1); |
|
| 92 |
+ return areo[0]; |
|
| 93 |
+ } |
|
| 94 |
+ } |
|
| 95 |
+ |
|
| 96 |
+} |
|
| 97 |
+ |
| ... | ... |
@@ -0,0 +1,50 @@ |
| 1 |
+/* |
|
| 2 |
+ |
|
| 3 |
+ IRC-Bot "Kvasir" |
|
| 4 |
+ Copyright (C) 2016 Fenris Wolf (fenris@folksprak.org) |
|
| 5 |
+ |
|
| 6 |
+ This program is free software: you can redistribute it and/or modify |
|
| 7 |
+ it under the terms of the GNU General Public License as published by |
|
| 8 |
+ the Free Software Foundation, either version 3 of the License, or |
|
| 9 |
+ (at your option) any later version. |
|
| 10 |
+ |
|
| 11 |
+ This program is distributed in the hope that it will be useful, |
|
| 12 |
+ but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 13 |
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 14 |
+ GNU General Public License for more details. |
|
| 15 |
+ |
|
| 16 |
+ You should have received a copy of the GNU General Public License |
|
| 17 |
+ along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 18 |
+ |
|
| 19 |
+*/ |
|
| 20 |
+ |
|
| 21 |
+ |
|
| 22 |
+/** |
|
| 23 |
+ * @author fenris |
|
| 24 |
+ */ |
|
| 25 |
+function vokado_nenio() : void |
|
| 26 |
+{
|
|
| 27 |
+} |
|
| 28 |
+ |
|
| 29 |
+ |
|
| 30 |
+/** |
|
| 31 |
+ * @author fenris |
|
| 32 |
+ */ |
|
| 33 |
+function vokado_atendi(dependajxoj : Array<(preta : ()=>void)=>void>, ago : ()=>void) : void |
|
| 34 |
+{
|
|
| 35 |
+ if (dependajxoj.length > 0) |
|
| 36 |
+ {
|
|
| 37 |
+ dependajxoj[0] |
|
| 38 |
+ ( |
|
| 39 |
+ function () : void |
|
| 40 |
+ {
|
|
| 41 |
+ vokado_atendi(dependajxoj.slice(1), ago); |
|
| 42 |
+ } |
|
| 43 |
+ ); |
|
| 44 |
+ } |
|
| 45 |
+ else |
|
| 46 |
+ {
|
|
| 47 |
+ ago(); |
|
| 48 |
+ } |
|
| 49 |
+} |
|
| 50 |
+ |
| ... | ... |
@@ -0,0 +1,139 @@ |
| 1 |
+/* |
|
| 2 |
+ |
|
| 3 |
+ IRC-Bot "Kvasir" |
|
| 4 |
+ Copyright (C) 2016 Fenris Wolf (fenris@folksprak.org) |
|
| 5 |
+ |
|
| 6 |
+ This program is free software: you can redistribute it and/or modify |
|
| 7 |
+ it under the terms of the GNU General Public License as published by |
|
| 8 |
+ the Free Software Foundation, either version 3 of the License, or |
|
| 9 |
+ (at your option) any later version. |
|
| 10 |
+ |
|
| 11 |
+ This program is distributed in the hope that it will be useful, |
|
| 12 |
+ but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 13 |
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 14 |
+ GNU General Public License for more details. |
|
| 15 |
+ |
|
| 16 |
+ You should have received a copy of the GNU General Public License |
|
| 17 |
+ along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 18 |
+ |
|
| 19 |
+*/ |
|
| 20 |
+ |
|
| 21 |
+declare var process; |
|
| 22 |
+ |
|
| 23 |
+ |
|
| 24 |
+/** |
|
| 25 |
+ * @author fenris |
|
| 26 |
+ */ |
|
| 27 |
+function cxefajxo() : void |
|
| 28 |
+{
|
|
| 29 |
+ function malkonfesado() : void {
|
|
| 30 |
+ console.info("Kvasir Copyright (C) 2016 Fenris Wolf");
|
|
| 31 |
+ console.info("This program comes with ABSOLUTELY NO WARRANTY.");
|
|
| 32 |
+ console.info("This is free software, and you are welcome to redistribute it");
|
|
| 33 |
+ console.info("under certain conditions.");
|
|
| 34 |
+ } |
|
| 35 |
+ |
|
| 36 |
+ function sekurigi() : void |
|
| 37 |
+ {
|
|
| 38 |
+ process.on |
|
| 39 |
+ ( |
|
| 40 |
+ "uncaughtException", |
|
| 41 |
+ function (event : Event) : void |
|
| 42 |
+ {
|
|
| 43 |
+ console.warn("malloka escepto: ", event);
|
|
| 44 |
+ } |
|
| 45 |
+ ); |
|
| 46 |
+ } |
|
| 47 |
+ |
|
| 48 |
+ function lancxi(agordoj : Object, fino : ()=>void = function () {}) : void
|
|
| 49 |
+ {
|
|
| 50 |
+ let kliento : klaso_kliento = new klaso_kliento_irc(agordoj, agordoj["prokrasto"]); |
|
| 51 |
+ kliento.stirado_arangxi(agordoj["administrantoj"]); |
|
| 52 |
+ vokado_atendi |
|
| 53 |
+ ( |
|
| 54 |
+ agordoj["kromajxoj"].map |
|
| 55 |
+ ( |
|
| 56 |
+ function (ero : Object) : (preta : ()=>void)=>void |
|
| 57 |
+ {
|
|
| 58 |
+ return ( |
|
| 59 |
+ function (preta : ()=>void) : void |
|
| 60 |
+ {
|
|
| 61 |
+ console.log("-- sxarganta na '" + ero["vojo"] + "' ...");
|
|
| 62 |
+ klaso_kromajxo_ekstera.krei |
|
| 63 |
+ ( |
|
| 64 |
+ ero["vojo"], |
|
| 65 |
+ function (eraro : Error, kromajxo : klaso_kromajxo_ekstera) : void |
|
| 66 |
+ {
|
|
| 67 |
+ if (eraro != null) |
|
| 68 |
+ {
|
|
| 69 |
+ console.warn(eraro); |
|
| 70 |
+ } |
|
| 71 |
+ else |
|
| 72 |
+ {
|
|
| 73 |
+ kliento.kromajxo_aldoni(kromajxo, ero["aktiva"]); |
|
| 74 |
+ } |
|
| 75 |
+ console.log("-- ... preta");
|
|
| 76 |
+ preta(); |
|
| 77 |
+ } |
|
| 78 |
+ ); |
|
| 79 |
+ } |
|
| 80 |
+ ); |
|
| 81 |
+ } |
|
| 82 |
+ ), |
|
| 83 |
+ function () : void |
|
| 84 |
+ {
|
|
| 85 |
+ console.log("-- konektanta ...");
|
|
| 86 |
+ kliento.konekti |
|
| 87 |
+ ( |
|
| 88 |
+ {},
|
|
| 89 |
+ function () : void |
|
| 90 |
+ {
|
|
| 91 |
+ console.log("-- konektita");
|
|
| 92 |
+ agordoj["auxtolancxo"].forEach(x => kliento.enigi(new klaso_evento_eniga_mesagxo(null, null, x))); |
|
| 93 |
+ fino(); |
|
| 94 |
+ } |
|
| 95 |
+ ); |
|
| 96 |
+ } |
|
| 97 |
+ ); |
|
| 98 |
+ } |
|
| 99 |
+ |
|
| 100 |
+ function agordoj_legi(vojo : string, uzado : (agordoj : Object)=>void) : void |
|
| 101 |
+ {
|
|
| 102 |
+ _fs.readFile |
|
| 103 |
+ ( |
|
| 104 |
+ vojo, |
|
| 105 |
+ {"encoding": "utf8", "flag": "r"},
|
|
| 106 |
+ function (eraro : any, enhavo : string) : void |
|
| 107 |
+ {
|
|
| 108 |
+ if (eraro != undefined) |
|
| 109 |
+ {
|
|
| 110 |
+ throw (new Error("agordoj ne enlegeblas: " + eraro.toString()));
|
|
| 111 |
+ } |
|
| 112 |
+ else |
|
| 113 |
+ {
|
|
| 114 |
+ let agordoj : Object; |
|
| 115 |
+ try |
|
| 116 |
+ {
|
|
| 117 |
+ agordoj = JSON.parse(enhavo); |
|
| 118 |
+ } |
|
| 119 |
+ catch (escpto) |
|
| 120 |
+ {
|
|
| 121 |
+ throw (new Error("agordoj ne enlegeblas: " + escpto.toString()));
|
|
| 122 |
+ agordoj = null; |
|
| 123 |
+ } |
|
| 124 |
+ if (agordoj != null) |
|
| 125 |
+ {
|
|
| 126 |
+ uzado(agordoj); |
|
| 127 |
+ } |
|
| 128 |
+ } |
|
| 129 |
+ } |
|
| 130 |
+ ); |
|
| 131 |
+ } |
|
| 132 |
+ |
|
| 133 |
+ malkonfesado(); |
|
| 134 |
+ sekurigi(); |
|
| 135 |
+ agordoj_legi("./agordoj.json", agordoj => lancxi(agordoj));
|
|
| 136 |
+} |
|
| 137 |
+ |
|
| 138 |
+cxefajxo(); |
|
| 139 |
+ |
| ... | ... |
@@ -0,0 +1,28 @@ |
| 1 |
+/* |
|
| 2 |
+ |
|
| 3 |
+ IRC-Bot "Kvasir" |
|
| 4 |
+ Copyright (C) 2016 Fenris Wolf (fenris@folksprak.org) |
|
| 5 |
+ |
|
| 6 |
+ This program is free software: you can redistribute it and/or modify |
|
| 7 |
+ it under the terms of the GNU General Public License as published by |
|
| 8 |
+ the Free Software Foundation, either version 3 of the License, or |
|
| 9 |
+ (at your option) any later version. |
|
| 10 |
+ |
|
| 11 |
+ This program is distributed in the hope that it will be useful, |
|
| 12 |
+ but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 13 |
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 14 |
+ GNU General Public License for more details. |
|
| 15 |
+ |
|
| 16 |
+ You should have received a copy of the GNU General Public License |
|
| 17 |
+ along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 18 |
+ |
|
| 19 |
+*/ |
|
| 20 |
+ |
|
| 21 |
+ |
|
| 22 |
+/** |
|
| 23 |
+ * @author fenris |
|
| 24 |
+ */ |
|
| 25 |
+abstract class klaso_evento |
|
| 26 |
+{
|
|
| 27 |
+} |
|
| 28 |
+ |
| ... | ... |
@@ -0,0 +1,43 @@ |
| 1 |
+/* |
|
| 2 |
+ |
|
| 3 |
+ IRC-Bot "Kvasir" |
|
| 4 |
+ Copyright (C) 2016 Fenris Wolf (fenris@folksprak.org) |
|
| 5 |
+ |
|
| 6 |
+ This program is free software: you can redistribute it and/or modify |
|
| 7 |
+ it under the terms of the GNU General Public License as published by |
|
| 8 |
+ the Free Software Foundation, either version 3 of the License, or |
|
| 9 |
+ (at your option) any later version. |
|
| 10 |
+ |
|
| 11 |
+ This program is distributed in the hope that it will be useful, |
|
| 12 |
+ but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 13 |
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 14 |
+ GNU General Public License for more details. |
|
| 15 |
+ |
|
| 16 |
+ You should have received a copy of the GNU General Public License |
|
| 17 |
+ along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 18 |
+ |
|
| 19 |
+*/ |
|
| 20 |
+ |
|
| 21 |
+ |
|
| 22 |
+/** |
|
| 23 |
+ * @author fenris |
|
| 24 |
+ */ |
|
| 25 |
+abstract class klaso_evento_eliga extends klaso_evento |
|
| 26 |
+{
|
|
| 27 |
+ |
|
| 28 |
+ /** |
|
| 29 |
+ * @author fenris |
|
| 30 |
+ */ |
|
| 31 |
+ public constructor() |
|
| 32 |
+ {
|
|
| 33 |
+ super(); |
|
| 34 |
+ } |
|
| 35 |
+ |
|
| 36 |
+ |
|
| 37 |
+ /** |
|
| 38 |
+ * @author fenris |
|
| 39 |
+ */ |
|
| 40 |
+ public static /*abstract*/ kruda_de(evento_kruda : Object) : klaso_evento_eliga {throw (new Error("not implemented"));}
|
|
| 41 |
+ |
|
| 42 |
+} |
|
| 43 |
+ |
| ... | ... |
@@ -0,0 +1,101 @@ |
| 1 |
+/* |
|
| 2 |
+ |
|
| 3 |
+ IRC-Bot "Kvasir" |
|
| 4 |
+ Copyright (C) 2016 Fenris Wolf (fenris@folksprak.org) |
|
| 5 |
+ |
|
| 6 |
+ This program is free software: you can redistribute it and/or modify |
|
| 7 |
+ it under the terms of the GNU General Public License as published by |
|
| 8 |
+ the Free Software Foundation, either version 3 of the License, or |
|
| 9 |
+ (at your option) any later version. |
|
| 10 |
+ |
|
| 11 |
+ This program is distributed in the hope that it will be useful, |
|
| 12 |
+ but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 13 |
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 14 |
+ GNU General Public License for more details. |
|
| 15 |
+ |
|
| 16 |
+ You should have received a copy of the GNU General Public License |
|
| 17 |
+ along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 18 |
+ |
|
| 19 |
+*/ |
|
| 20 |
+ |
|
| 21 |
+ |
|
| 22 |
+/** |
|
| 23 |
+ * @author fenris |
|
| 24 |
+ */ |
|
| 25 |
+class klaso_evento_eliga_mesagxo extends klaso_evento_eliga |
|
| 26 |
+{
|
|
| 27 |
+ |
|
| 28 |
+ /** |
|
| 29 |
+ * @author fenris |
|
| 30 |
+ */ |
|
| 31 |
+ protected celo : string; |
|
| 32 |
+ |
|
| 33 |
+ |
|
| 34 |
+ /** |
|
| 35 |
+ * @author fenris |
|
| 36 |
+ */ |
|
| 37 |
+ protected enhavo : string; |
|
| 38 |
+ |
|
| 39 |
+ |
|
| 40 |
+ /** |
|
| 41 |
+ * @author fenris |
|
| 42 |
+ */ |
|
| 43 |
+ protected alparolato : string; |
|
| 44 |
+ |
|
| 45 |
+ |
|
| 46 |
+ /** |
|
| 47 |
+ * @author fenris |
|
| 48 |
+ */ |
|
| 49 |
+ public constructor(celo : string, alparolato : string, enhavo : string) |
|
| 50 |
+ {
|
|
| 51 |
+ super(); |
|
| 52 |
+ this.celo = celo; |
|
| 53 |
+ this.enhavo = enhavo; |
|
| 54 |
+ this.alparolato = alparolato; |
|
| 55 |
+ } |
|
| 56 |
+ |
|
| 57 |
+ |
|
| 58 |
+ /** |
|
| 59 |
+ * @author fenris |
|
| 60 |
+ */ |
|
| 61 |
+ public static kruda_de(eligo_kruda : Object) : klaso_evento_eliga_mesagxo |
|
| 62 |
+ {
|
|
| 63 |
+ return ( |
|
| 64 |
+ new klaso_evento_eliga_mesagxo |
|
| 65 |
+ ( |
|
| 66 |
+ eligo_kruda["parametroj"]["celo"], |
|
| 67 |
+ eligo_kruda["parametroj"]["alparolato"], |
|
| 68 |
+ eligo_kruda["parametroj"]["enhavo"] |
|
| 69 |
+ ) |
|
| 70 |
+ ); |
|
| 71 |
+ } |
|
| 72 |
+ |
|
| 73 |
+ |
|
| 74 |
+ /** |
|
| 75 |
+ * @author fenris |
|
| 76 |
+ */ |
|
| 77 |
+ public celo_legi() : string |
|
| 78 |
+ {
|
|
| 79 |
+ return this.celo; |
|
| 80 |
+ } |
|
| 81 |
+ |
|
| 82 |
+ |
|
| 83 |
+ /** |
|
| 84 |
+ * @author fenris |
|
| 85 |
+ */ |
|
| 86 |
+ public enhavo_legi() : string |
|
| 87 |
+ {
|
|
| 88 |
+ return this.enhavo; |
|
| 89 |
+ } |
|
| 90 |
+ |
|
| 91 |
+ |
|
| 92 |
+ /** |
|
| 93 |
+ * @author fenris |
|
| 94 |
+ */ |
|
| 95 |
+ public alparolato_legi() : string |
|
| 96 |
+ {
|
|
| 97 |
+ return this.alparolato; |
|
| 98 |
+ } |
|
| 99 |
+ |
|
| 100 |
+} |
|
| 101 |
+ |
| ... | ... |
@@ -0,0 +1,43 @@ |
| 1 |
+/* |
|
| 2 |
+ |
|
| 3 |
+ IRC-Bot "Kvasir" |
|
| 4 |
+ Copyright (C) 2016 Fenris Wolf (fenris@folksprak.org) |
|
| 5 |
+ |
|
| 6 |
+ This program is free software: you can redistribute it and/or modify |
|
| 7 |
+ it under the terms of the GNU General Public License as published by |
|
| 8 |
+ the Free Software Foundation, either version 3 of the License, or |
|
| 9 |
+ (at your option) any later version. |
|
| 10 |
+ |
|
| 11 |
+ This program is distributed in the hope that it will be useful, |
|
| 12 |
+ but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 13 |
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 14 |
+ GNU General Public License for more details. |
|
| 15 |
+ |
|
| 16 |
+ You should have received a copy of the GNU General Public License |
|
| 17 |
+ along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 18 |
+ |
|
| 19 |
+*/ |
|
| 20 |
+ |
|
| 21 |
+ |
|
| 22 |
+/** |
|
| 23 |
+ * @author fenris |
|
| 24 |
+ */ |
|
| 25 |
+abstract class klaso_evento_eniga extends klaso_evento |
|
| 26 |
+{
|
|
| 27 |
+ |
|
| 28 |
+ /** |
|
| 29 |
+ * @author fenris |
|
| 30 |
+ */ |
|
| 31 |
+ public constructor() |
|
| 32 |
+ {
|
|
| 33 |
+ super(); |
|
| 34 |
+ } |
|
| 35 |
+ |
|
| 36 |
+ |
|
| 37 |
+ /** |
|
| 38 |
+ * @author fenris |
|
| 39 |
+ */ |
|
| 40 |
+ public abstract kruda_al() : Object; |
|
| 41 |
+ |
|
| 42 |
+} |
|
| 43 |
+ |
| ... | ... |
@@ -0,0 +1,67 @@ |
| 1 |
+/* |
|
| 2 |
+ |
|
| 3 |
+ IRC-Bot "Kvasir" |
|
| 4 |
+ Copyright (C) 2016 Fenris Wolf (fenris@folksprak.org) |
|
| 5 |
+ |
|
| 6 |
+ This program is free software: you can redistribute it and/or modify |
|
| 7 |
+ it under the terms of the GNU General Public License as published by |
|
| 8 |
+ the Free Software Foundation, either version 3 of the License, or |
|
| 9 |
+ (at your option) any later version. |
|
| 10 |
+ |
|
| 11 |
+ This program is distributed in the hope that it will be useful, |
|
| 12 |
+ but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 13 |
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 14 |
+ GNU General Public License for more details. |
|
| 15 |
+ |
|
| 16 |
+ You should have received a copy of the GNU General Public License |
|
| 17 |
+ along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 18 |
+ |
|
| 19 |
+*/ |
|
| 20 |
+ |
|
| 21 |
+ |
|
| 22 |
+/** |
|
| 23 |
+ * @author fenris |
|
| 24 |
+ */ |
|
| 25 |
+class klaso_evento_eniga_mesagxo extends klaso_evento_eniga |
|
| 26 |
+{
|
|
| 27 |
+ |
|
| 28 |
+ /** |
|
| 29 |
+ * @author fenris |
|
| 30 |
+ */ |
|
| 31 |
+ protected fonto : string; |
|
| 32 |
+ |
|
| 33 |
+ |
|
| 34 |
+ /** |
|
| 35 |
+ * @author fenris |
|
| 36 |
+ */ |
|
| 37 |
+ protected sendinto : string; |
|
| 38 |
+ |
|
| 39 |
+ |
|
| 40 |
+ /** |
|
| 41 |
+ * @author fenris |
|
| 42 |
+ */ |
|
| 43 |
+ protected enhavo : string; |
|
| 44 |
+ |
|
| 45 |
+ |
|
| 46 |
+ /** |
|
| 47 |
+ * @author fenris |
|
| 48 |
+ */ |
|
| 49 |
+ public constructor(fonto : string, sendinto : string, enhavo : string) |
|
| 50 |
+ {
|
|
| 51 |
+ super(); |
|
| 52 |
+ this.fonto = fonto; |
|
| 53 |
+ this.sendinto = sendinto; |
|
| 54 |
+ this.enhavo = enhavo; |
|
| 55 |
+ } |
|
| 56 |
+ |
|
| 57 |
+ |
|
| 58 |
+ /** |
|
| 59 |
+ * @author fenris |
|
| 60 |
+ */ |
|
| 61 |
+ public kruda_al() : Object |
|
| 62 |
+ {
|
|
| 63 |
+ return {"tipo": "mesagxo", "parametroj": {"fonto": this.fonto, "sendinto": this.sendinto, "enhavo": this.enhavo}};
|
|
| 64 |
+ } |
|
| 65 |
+ |
|
| 66 |
+} |
|
| 67 |
+ |
| ... | ... |
@@ -0,0 +1,293 @@ |
| 1 |
+/* |
|
| 2 |
+ |
|
| 3 |
+ IRC-Bot "Kvasir" |
|
| 4 |
+ Copyright (C) 2016 Fenris Wolf (fenris@folksprak.org) |
|
| 5 |
+ |
|
| 6 |
+ This program is free software: you can redistribute it and/or modify |
|
| 7 |
+ it under the terms of the GNU General Public License as published by |
|
| 8 |
+ the Free Software Foundation, either version 3 of the License, or |
|
| 9 |
+ (at your option) any later version. |
|
| 10 |
+ |
|
| 11 |
+ This program is distributed in the hope that it will be useful, |
|
| 12 |
+ but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 13 |
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 14 |
+ GNU General Public License for more details. |
|
| 15 |
+ |
|
| 16 |
+ You should have received a copy of the GNU General Public License |
|
| 17 |
+ along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 18 |
+ |
|
| 19 |
+*/ |
|
| 20 |
+ |
|
| 21 |
+type tipo_ero = {kromajxo : klaso_kromajxo; aktiva : boolean;};
|
|
| 22 |
+ |
|
| 23 |
+ |
|
| 24 |
+/** |
|
| 25 |
+ * @author fenris |
|
| 26 |
+ */ |
|
| 27 |
+abstract class klaso_kliento |
|
| 28 |
+{
|
|
| 29 |
+ |
|
| 30 |
+ /** |
|
| 31 |
+ * @author fenris |
|
| 32 |
+ */ |
|
| 33 |
+ protected kromajxoj : {[identigilo : string] : tipo_ero};
|
|
| 34 |
+ |
|
| 35 |
+ |
|
| 36 |
+ /** |
|
| 37 |
+ * @author fenris |
|
| 38 |
+ */ |
|
| 39 |
+ protected vico_eliga : klaso_vico<klaso_evento_eliga>; |
|
| 40 |
+ |
|
| 41 |
+ |
|
| 42 |
+ /** |
|
| 43 |
+ * @author fenris |
|
| 44 |
+ */ |
|
| 45 |
+ protected prokrasto : int; |
|
| 46 |
+ |
|
| 47 |
+ |
|
| 48 |
+ /** |
|
| 49 |
+ * @author fenris |
|
| 50 |
+ */ |
|
| 51 |
+ protected foo : any; |
|
| 52 |
+ |
|
| 53 |
+ |
|
| 54 |
+ /** |
|
| 55 |
+ * @author fenris |
|
| 56 |
+ */ |
|
| 57 |
+ public constructor(prokrasto : int = null) |
|
| 58 |
+ {
|
|
| 59 |
+ this.kromajxoj = {};
|
|
| 60 |
+ this.vico_eliga = new klaso_vico<klaso_evento_eliga>(); |
|
| 61 |
+ this.foo = null; |
|
| 62 |
+ this.prokrasto = prokrasto; |
|
| 63 |
+ } |
|
| 64 |
+ |
|
| 65 |
+ |
|
| 66 |
+ /** |
|
| 67 |
+ * @author fenris |
|
| 68 |
+ */ |
|
| 69 |
+ public stirado_arangxi |
|
| 70 |
+ ( |
|
| 71 |
+ permesuloj : Array<string> = [] |
|
| 72 |
+ ) |
|
| 73 |
+ {
|
|
| 74 |
+ let that : klaso_kliento = this; |
|
| 75 |
+ this.kromajxo_aldoni |
|
| 76 |
+ ( |
|
| 77 |
+ new klaso_kromajxo_stirado |
|
| 78 |
+ ( |
|
| 79 |
+ permesuloj, |
|
| 80 |
+ {
|
|
| 81 |
+ "anigxi": function (kanalo : string, modo : boolean = true) : void |
|
| 82 |
+ {
|
|
| 83 |
+ that.anigxi_rekte(kanalo, modo); |
|
| 84 |
+ }, |
|
| 85 |
+ "listigi": function (celo : string) : void |
|
| 86 |
+ {
|
|
| 87 |
+ let enhavo : string = Object.keys(that.kromajxoj).map(identigilo => (that.kromajxoj[identigilo].aktiva ? "+" : "-") + identigilo).join(", ");
|
|
| 88 |
+ that.eligi(new klaso_evento_eliga_mesagxo(celo, null, enhavo)); |
|
| 89 |
+ }, |
|
| 90 |
+ "detaloj": function (identigilo : string, celo : string) : void |
|
| 91 |
+ {
|
|
| 92 |
+ if (identigilo in that.kromajxoj) |
|
| 93 |
+ {
|
|
| 94 |
+ let ero : tipo_ero = that.kromajxoj[identigilo]; |
|
| 95 |
+ let enhavoj : Array<string> = |
|
| 96 |
+ [ |
|
| 97 |
+ "-- nomo: " + ero.kromajxo.nomo_legi(), |
|
| 98 |
+ "-- auxtoro: " + ero.kromajxo.auxtoro_legi(), |
|
| 99 |
+ "-- priskribo: " + ero.kromajxo.priskribo_legi(), |
|
| 100 |
+ "-- aktiva: " + (ero.aktiva ? "jes" : "ne"), |
|
| 101 |
+ ]; |
|
| 102 |
+ enhavoj.forEach(enhavo => that.eligi(new klaso_evento_eliga_mesagxo(celo, null, enhavo))); |
|
| 103 |
+ } |
|
| 104 |
+ }, |
|
| 105 |
+ "sxalti": function (identigilo : string, aktiva : boolean = null, celo : string = null) : void |
|
| 106 |
+ {
|
|
| 107 |
+ if (identigilo in that.kromajxoj) |
|
| 108 |
+ {
|
|
| 109 |
+ if (identigilo != "stirado") |
|
| 110 |
+ {
|
|
| 111 |
+ let aktiva_ : boolean = (aktiva != null) ? aktiva : (! that.kromajxoj[identigilo].aktiva); |
|
| 112 |
+ that.kromajxoj[identigilo].aktiva = aktiva_; |
|
| 113 |
+ if (celo != null) that.eligi(new klaso_evento_eliga_mesagxo(celo, null, "kromajxo '" + identigilo + "' " + (aktiva_ ? "aktivigita" : "malaktivigita") + "")); |
|
| 114 |
+ } |
|
| 115 |
+ else |
|
| 116 |
+ {
|
|
| 117 |
+ if (celo != null) that.eligi(new klaso_evento_eliga_mesagxo(celo, null, "vi ne vere volas sxalti la stirad-kromajxon ...")); |
|
| 118 |
+ } |
|
| 119 |
+ } |
|
| 120 |
+ }, |
|
| 121 |
+ "resxargi": function (identigilo : string, celo : string = null) : void |
|
| 122 |
+ {
|
|
| 123 |
+ let ero : tipo_ero = that.kromajxoj[identigilo]; |
|
| 124 |
+ if (ero.kromajxo instanceof klaso_kromajxo_ekstera) |
|
| 125 |
+ {
|
|
| 126 |
+ let kromajxo : klaso_kromajxo_ekstera = <klaso_kromajxo_ekstera>(ero.kromajxo); |
|
| 127 |
+ kromajxo.resxargi |
|
| 128 |
+ ( |
|
| 129 |
+ function (eraro : Error) : void |
|
| 130 |
+ {
|
|
| 131 |
+ if (eraro != null) |
|
| 132 |
+ {
|
|
| 133 |
+ console.warn(eraro); |
|
| 134 |
+ if (celo != null) that.eligi(new klaso_evento_eliga_mesagxo(celo, null, "resxargado fiaskis; detaloj trovigxas je la konzolo")); |
|
| 135 |
+ } |
|
| 136 |
+ else |
|
| 137 |
+ {
|
|
| 138 |
+ if (celo != null) that.eligi(new klaso_evento_eliga_mesagxo(celo, null, "kromajxo '" + identigilo + "' resxargita")); |
|
| 139 |
+ } |
|
| 140 |
+ } |
|
| 141 |
+ ); |
|
| 142 |
+ } |
|
| 143 |
+ }, |
|
| 144 |
+ "aldoni": function (nomo : string, celo : string= null) : void |
|
| 145 |
+ {
|
|
| 146 |
+ if ((new RegExp("\\w")).test(nomo))
|
|
| 147 |
+ {
|
|
| 148 |
+ let vojo : string = "fontoj/kromajxoj/kromajxo_" + nomo + ".js"; |
|
| 149 |
+ klaso_kromajxo_ekstera.krei |
|
| 150 |
+ ( |
|
| 151 |
+ vojo, |
|
| 152 |
+ function (eraro : Error, kromajxo : klaso_kromajxo_ekstera) : void |
|
| 153 |
+ {
|
|
| 154 |
+ if (eraro != null) |
|
| 155 |
+ {
|
|
| 156 |
+ console.warn(eraro); |
|
| 157 |
+ if (celo != null) that.eligi(new klaso_evento_eliga_mesagxo(celo, null, "aldoni kromajxon fiaskis")); |
|
| 158 |
+ } |
|
| 159 |
+ else |
|
| 160 |
+ {
|
|
| 161 |
+ that.kromajxo_aldoni(kromajxo); |
|
| 162 |
+ if (celo != null) that.eligi(new klaso_evento_eliga_mesagxo(celo, null, "kromajxo sukcese aldonita")); |
|
| 163 |
+ } |
|
| 164 |
+ } |
|
| 165 |
+ ); |
|
| 166 |
+ } |
|
| 167 |
+ }, |
|
| 168 |
+ } |
|
| 169 |
+ ) |
|
| 170 |
+ ); |
|
| 171 |
+ } |
|
| 172 |
+ |
|
| 173 |
+ |
|
| 174 |
+ /** |
|
| 175 |
+ * @author fenris |
|
| 176 |
+ */ |
|
| 177 |
+ public kromajxo_aldoni(kromajxo : klaso_kromajxo, aktiva : boolean = true, anstatauxigi : boolean = false) : void |
|
| 178 |
+ {
|
|
| 179 |
+ let identigilo : string = kromajxo.identigilo_legi(); |
|
| 180 |
+ if (identigilo in this.kromajxoj) |
|
| 181 |
+ {
|
|
| 182 |
+ if (anstatauxigi && (identigilo != "stirado")) |
|
| 183 |
+ {
|
|
| 184 |
+ console.warn("kromajxo '" + identigilo + "' jam registrita; gxi anstatauxigatos");
|
|
| 185 |
+ this.kromajxoj[identigilo] = {"kromajxo": kromajxo, "aktiva": aktiva};
|
|
| 186 |
+ } |
|
| 187 |
+ else |
|
| 188 |
+ {
|
|
| 189 |
+ console.warn("kromajxo '" + identigilo + "' jam registrita; gxi NE anstatauxigatos");
|
|
| 190 |
+ } |
|
| 191 |
+ } |
|
| 192 |
+ else |
|
| 193 |
+ {
|
|
| 194 |
+ this.kromajxoj[identigilo] = {"kromajxo": kromajxo, "aktiva": aktiva};
|
|
| 195 |
+ } |
|
| 196 |
+ } |
|
| 197 |
+ |
|
| 198 |
+ |
|
| 199 |
+ /** |
|
| 200 |
+ * @author fenris |
|
| 201 |
+ */ |
|
| 202 |
+ public abstract konekti(parametroj : Object, fino : ()=>void) : void; |
|
| 203 |
+ |
|
| 204 |
+ |
|
| 205 |
+ /** |
|
| 206 |
+ * @author fenris |
|
| 207 |
+ */ |
|
| 208 |
+ public enigi(enigo : klaso_evento_eniga) : void |
|
| 209 |
+ {
|
|
| 210 |
+ let that : klaso_kliento = this; |
|
| 211 |
+ Object.keys(this.kromajxoj).forEach |
|
| 212 |
+ ( |
|
| 213 |
+ function (identigilo : string) : void |
|
| 214 |
+ {
|
|
| 215 |
+ let ero : tipo_ero = that.kromajxoj[identigilo]; |
|
| 216 |
+ {
|
|
| 217 |
+ if (ero.aktiva) |
|
| 218 |
+ {
|
|
| 219 |
+ ero.kromajxo.enigi |
|
| 220 |
+ ( |
|
| 221 |
+ enigo, |
|
| 222 |
+ function (eligo : klaso_evento_eliga) : void |
|
| 223 |
+ {
|
|
| 224 |
+ try |
|
| 225 |
+ {
|
|
| 226 |
+ if (enigo["fonto"].indexOf("#") < 0)
|
|
| 227 |
+ {
|
|
| 228 |
+ eligo["celo"] = enigo["sendinto"]; |
|
| 229 |
+ } |
|
| 230 |
+ } |
|
| 231 |
+ catch (escepto) |
|
| 232 |
+ {
|
|
| 233 |
+ console.warn(escepto); |
|
| 234 |
+ } |
|
| 235 |
+ that.eligi(eligo); |
|
| 236 |
+ } |
|
| 237 |
+ ) |
|
| 238 |
+ } |
|
| 239 |
+ } |
|
| 240 |
+ } |
|
| 241 |
+ ); |
|
| 242 |
+ } |
|
| 243 |
+ |
|
| 244 |
+ |
|
| 245 |
+ /** |
|
| 246 |
+ * @author fenris |
|
| 247 |
+ */ |
|
| 248 |
+ protected abstract eligi_rekte(eligo : klaso_evento_eliga) : void; |
|
| 249 |
+ |
|
| 250 |
+ |
|
| 251 |
+ /** |
|
| 252 |
+ * @author fenris |
|
| 253 |
+ */ |
|
| 254 |
+ protected abstract anigxi_rekte(kanalo : string, modo : boolean) : void; |
|
| 255 |
+ |
|
| 256 |
+ |
|
| 257 |
+ /** |
|
| 258 |
+ * @author fenris |
|
| 259 |
+ */ |
|
| 260 |
+ protected eligi(eligo : klaso_evento_eliga) : void |
|
| 261 |
+ {
|
|
| 262 |
+ let that : klaso_kliento = this; |
|
| 263 |
+ |
|
| 264 |
+ function fari() : void |
|
| 265 |
+ {
|
|
| 266 |
+ if (that.vico_eliga.malplena()) |
|
| 267 |
+ {
|
|
| 268 |
+ clearInterval(that.foo); |
|
| 269 |
+ that.foo = null; |
|
| 270 |
+ } |
|
| 271 |
+ else |
|
| 272 |
+ {
|
|
| 273 |
+ that.eligi_rekte(that.vico_eliga.preni()); |
|
| 274 |
+ } |
|
| 275 |
+ } |
|
| 276 |
+ |
|
| 277 |
+ if (this.prokrasto == null) |
|
| 278 |
+ {
|
|
| 279 |
+ that.eligi_rekte(eligo); |
|
| 280 |
+ } |
|
| 281 |
+ else |
|
| 282 |
+ {
|
|
| 283 |
+ this.vico_eliga.doni(eligo); |
|
| 284 |
+ if (this.foo == null) |
|
| 285 |
+ {
|
|
| 286 |
+ fari(); |
|
| 287 |
+ this.foo = setInterval(fari, this.prokrasto); |
|
| 288 |
+ } |
|
| 289 |
+ } |
|
| 290 |
+ } |
|
| 291 |
+ |
|
| 292 |
+} |
|
| 293 |
+ |
| ... | ... |
@@ -0,0 +1,119 @@ |
| 1 |
+/* |
|
| 2 |
+ |
|
| 3 |
+ IRC-Bot "Kvasir" |
|
| 4 |
+ Copyright (C) 2016 Fenris Wolf (fenris@folksprak.org) |
|
| 5 |
+ |
|
| 6 |
+ This program is free software: you can redistribute it and/or modify |
|
| 7 |
+ it under the terms of the GNU General Public License as published by |
|
| 8 |
+ the Free Software Foundation, either version 3 of the License, or |
|
| 9 |
+ (at your option) any later version. |
|
| 10 |
+ |
|
| 11 |
+ This program is distributed in the hope that it will be useful, |
|
| 12 |
+ but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 13 |
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 14 |
+ GNU General Public License for more details. |
|
| 15 |
+ |
|
| 16 |
+ You should have received a copy of the GNU General Public License |
|
| 17 |
+ along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 18 |
+ |
|
| 19 |
+*/ |
|
| 20 |
+ |
|
| 21 |
+var _irc = require("./node_modules/irc");
|
|
| 22 |
+ |
|
| 23 |
+ |
|
| 24 |
+/** |
|
| 25 |
+ * @author fenris |
|
| 26 |
+ */ |
|
| 27 |
+class klaso_kliento_irc extends klaso_kliento |
|
| 28 |
+{
|
|
| 29 |
+ |
|
| 30 |
+ /** |
|
| 31 |
+ * @author fenris |
|
| 32 |
+ */ |
|
| 33 |
+ protected irc : /*_irc.Client*/any; |
|
| 34 |
+ |
|
| 35 |
+ |
|
| 36 |
+ /** |
|
| 37 |
+ * @author fenris |
|
| 38 |
+ */ |
|
| 39 |
+ public constructor(agordoj : Object, prokrasto : int) |
|
| 40 |
+ {
|
|
| 41 |
+ super(prokrasto); |
|
| 42 |
+ this.irc = new _irc.Client(agordoj["servilo"], agordoj["kromnomo"], {"channels": agordoj["kanaloj"], "userName": agordoj["uzantnomo"], "password": agordoj["pasvorto"], "autoConnect": false});
|
|
| 43 |
+ } |
|
| 44 |
+ |
|
| 45 |
+ |
|
| 46 |
+ /** |
|
| 47 |
+ * @author fenris |
|
| 48 |
+ */ |
|
| 49 |
+ public konekti(parametroj : Object, fino : ()=>void) : void |
|
| 50 |
+ {
|
|
| 51 |
+ let that : klaso_kliento_irc = this; |
|
| 52 |
+ this.irc["addListener"] |
|
| 53 |
+ ( |
|
| 54 |
+ "message", |
|
| 55 |
+ function (sendinto : string, fonto : string, enhavo : string) : void |
|
| 56 |
+ {
|
|
| 57 |
+ that.enigi(new klaso_evento_eniga_mesagxo(fonto, sendinto, enhavo)); |
|
| 58 |
+ } |
|
| 59 |
+ ); |
|
| 60 |
+ this.irc.connect |
|
| 61 |
+ ( |
|
| 62 |
+ 3, |
|
| 63 |
+ function () : void |
|
| 64 |
+ {
|
|
| 65 |
+ fino(); |
|
| 66 |
+ } |
|
| 67 |
+ ); |
|
| 68 |
+ } |
|
| 69 |
+ |
|
| 70 |
+ |
|
| 71 |
+ /** |
|
| 72 |
+ * @author fenris |
|
| 73 |
+ */ |
|
| 74 |
+ protected eligi_rekte(eligo : klaso_evento_eliga) : void |
|
| 75 |
+ {
|
|
| 76 |
+ if (eligo instanceof klaso_evento_eliga_mesagxo) |
|
| 77 |
+ {
|
|
| 78 |
+ let eligo_mesagxo : klaso_evento_eliga_mesagxo = <klaso_evento_eliga_mesagxo>(eligo); |
|
| 79 |
+ try |
|
| 80 |
+ {
|
|
| 81 |
+ let cxeno : string = ""; |
|
| 82 |
+ {
|
|
| 83 |
+ let alparolato : string = eligo_mesagxo.alparolato_legi(); |
|
| 84 |
+ if (alparolato != null) cxeno += alparolato + ": "; |
|
| 85 |
+ } |
|
| 86 |
+ {
|
|
| 87 |
+ let enhavo : string = eligo_mesagxo.enhavo_legi(); |
|
| 88 |
+ if (enhavo != null) cxeno += enhavo; |
|
| 89 |
+ } |
|
| 90 |
+ this.irc["say"](eligo_mesagxo.celo_legi(), cxeno); |
|
| 91 |
+ } |
|
| 92 |
+ catch (escepto) |
|
| 93 |
+ {
|
|
| 94 |
+ console.warn(escepto); |
|
| 95 |
+ } |
|
| 96 |
+ } |
|
| 97 |
+ else |
|
| 98 |
+ {
|
|
| 99 |
+ } |
|
| 100 |
+ } |
|
| 101 |
+ |
|
| 102 |
+ |
|
| 103 |
+ /** |
|
| 104 |
+ * @author fenris |
|
| 105 |
+ */ |
|
| 106 |
+ protected anigxi_rekte(kanalo : string, modo : boolean = true) : void |
|
| 107 |
+ {
|
|
| 108 |
+ if (modo) |
|
| 109 |
+ {
|
|
| 110 |
+ this.irc["join"](kanalo); |
|
| 111 |
+ } |
|
| 112 |
+ else |
|
| 113 |
+ {
|
|
| 114 |
+ this.irc["part"](kanalo, "vi kan maka en ander verld"); |
|
| 115 |
+ } |
|
| 116 |
+ } |
|
| 117 |
+ |
|
| 118 |
+} |
|
| 119 |
+ |
| ... | ... |
@@ -0,0 +1,81 @@ |
| 1 |
+/* |
|
| 2 |
+ |
|
| 3 |
+ IRC-Bot "Kvasir" |
|
| 4 |
+ Copyright (C) 2016 Fenris Wolf (fenris@folksprak.org) |
|
| 5 |
+ |
|
| 6 |
+ This program is free software: you can redistribute it and/or modify |
|
| 7 |
+ it under the terms of the GNU General Public License as published by |
|
| 8 |
+ the Free Software Foundation, either version 3 of the License, or |
|
| 9 |
+ (at your option) any later version. |
|
| 10 |
+ |
|
| 11 |
+ This program is distributed in the hope that it will be useful, |
|
| 12 |
+ but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 13 |
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 14 |
+ GNU General Public License for more details. |
|
| 15 |
+ |
|
| 16 |
+ You should have received a copy of the GNU General Public License |
|
| 17 |
+ along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 18 |
+ |
|
| 19 |
+*/ |
|
| 20 |
+ |
|
| 21 |
+ |
|
| 22 |
+/** |
|
| 23 |
+ * @author fenris |
|
| 24 |
+ */ |
|
| 25 |
+class klaso_kliento_pseuxda extends klaso_kliento |
|
| 26 |
+{
|
|
| 27 |
+ |
|
| 28 |
+ /** |
|
| 29 |
+ * @author fenris |
|
| 30 |
+ */ |
|
| 31 |
+ public constructor(prokrasto : int) |
|
| 32 |
+ {
|
|
| 33 |
+ super(prokrasto); |
|
| 34 |
+ } |
|
| 35 |
+ |
|
| 36 |
+ |
|
| 37 |
+ /** |
|
| 38 |
+ * @author fenris |
|
| 39 |
+ */ |
|
| 40 |
+ public konekti(parametroj : Object, fino : ()=>void) : void |
|
| 41 |
+ {
|
|
| 42 |
+ fino(); |
|
| 43 |
+ } |
|
| 44 |
+ |
|
| 45 |
+ |
|
| 46 |
+ /** |
|
| 47 |
+ * @author fenris |
|
| 48 |
+ */ |
|
| 49 |
+ protected eligi_rekte(eligo : klaso_evento_eliga) : void |
|
| 50 |
+ {
|
|
| 51 |
+ if (eligo instanceof klaso_evento_eliga_mesagxo) |
|
| 52 |
+ {
|
|
| 53 |
+ let eligo_mesagxo : klaso_evento_eliga_mesagxo = <klaso_evento_eliga_mesagxo>(eligo); |
|
| 54 |
+ let cxeno : string = ""; |
|
| 55 |
+ {
|
|
| 56 |
+ let alparolato : string = eligo_mesagxo.alparolato_legi(); |
|
| 57 |
+ if (alparolato != null) cxeno += alparolato + ": "; |
|
| 58 |
+ } |
|
| 59 |
+ {
|
|
| 60 |
+ let enhavo : string = eligo_mesagxo.enhavo_legi(); |
|
| 61 |
+ if (enhavo != null) cxeno += enhavo; |
|
| 62 |
+ } |
|
| 63 |
+ console.info(cxeno); |
|
| 64 |
+ } |
|
| 65 |
+ else |
|
| 66 |
+ {
|
|
| 67 |
+ console.info(eligo); |
|
| 68 |
+ } |
|
| 69 |
+ } |
|
| 70 |
+ |
|
| 71 |
+ |
|
| 72 |
+ /** |
|
| 73 |
+ * @author fenris |
|
| 74 |
+ */ |
|
| 75 |
+ protected anigxi_rekte(kanalo : string, modo : boolean) : void |
|
| 76 |
+ {
|
|
| 77 |
+ console.warn("neebla");
|
|
| 78 |
+ } |
|
| 79 |
+ |
|
| 80 |
+} |
|
| 81 |
+ |
| ... | ... |
@@ -0,0 +1,125 @@ |
| 1 |
+/* |
|
| 2 |
+ |
|
| 3 |
+ IRC-Bot "Kvasir" |
|
| 4 |
+ Copyright (C) 2016 Fenris Wolf (fenris@folksprak.org) |
|
| 5 |
+ |
|
| 6 |
+ This program is free software: you can redistribute it and/or modify |
|
| 7 |
+ it under the terms of the GNU General Public License as published by |
|
| 8 |
+ the Free Software Foundation, either version 3 of the License, or |
|
| 9 |
+ (at your option) any later version. |
|
| 10 |
+ |
|
| 11 |
+ This program is distributed in the hope that it will be useful, |
|
| 12 |
+ but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 13 |
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 14 |
+ GNU General Public License for more details. |
|
| 15 |
+ |
|
| 16 |
+ You should have received a copy of the GNU General Public License |
|
| 17 |
+ along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 18 |
+ |
|
| 19 |
+*/ |
|
| 20 |
+ |
|
| 21 |
+ |
|
| 22 |
+/** |
|
| 23 |
+ * @author fenris |
|
| 24 |
+ */ |
|
| 25 |
+abstract class klaso_kromajxo |
|
| 26 |
+{
|
|
| 27 |
+ |
|
| 28 |
+ /** |
|
| 29 |
+ * @author fenris |
|
| 30 |
+ */ |
|
| 31 |
+ protected identigilo : string; |
|
| 32 |
+ |
|
| 33 |
+ |
|
| 34 |
+ /** |
|
| 35 |
+ * @author fenris |
|
| 36 |
+ */ |
|
| 37 |
+ protected nomo : string; |
|
| 38 |
+ |
|
| 39 |
+ |
|
| 40 |
+ /** |
|
| 41 |
+ * @author fenris |
|
| 42 |
+ */ |
|
| 43 |
+ protected priskribo : string; |
|
| 44 |
+ |
|
| 45 |
+ |
|
| 46 |
+ /** |
|
| 47 |
+ * @author fenris |
|
| 48 |
+ */ |
|
| 49 |
+ protected auxtoro : string; |
|
| 50 |
+ |
|
| 51 |
+ |
|
| 52 |
+ /** |
|
| 53 |
+ * @author fenris |
|
| 54 |
+ */ |
|
| 55 |
+ public constructor(identigilo : string = null, nomo : string = null, priskribo : string = null, auxtoro : string = null) |
|
| 56 |
+ {
|
|
| 57 |
+ if (identigilo == null) |
|
| 58 |
+ {
|
|
| 59 |
+ identigilo = cxeno_generi("kromajxo_");
|
|
| 60 |
+ console.warn("nenia identigilo donita; la jena estis generita: " + identigilo);
|
|
| 61 |
+ } |
|
| 62 |
+ this.identigilo = identigilo; |
|
| 63 |
+ this.nomo = nomo; |
|
| 64 |
+ this.priskribo = priskribo; |
|
| 65 |
+ this.auxtoro = auxtoro; |
|
| 66 |
+ } |
|
| 67 |
+ |
|
| 68 |
+ |
|
| 69 |
+ /** |
|
| 70 |
+ * @author fenris |
|
| 71 |
+ */ |
|
| 72 |
+ public identigilo_legi() : string |
|
| 73 |
+ {
|
|
| 74 |
+ return this.identigilo; |
|
| 75 |
+ } |
|
| 76 |
+ |
|
| 77 |
+ |
|
| 78 |
+ /** |
|
| 79 |
+ * @author fenris |
|
| 80 |
+ */ |
|
| 81 |
+ public nomo_legi() : string |
|
| 82 |
+ {
|
|
| 83 |
+ return this.nomo; |
|
| 84 |
+ } |
|
| 85 |
+ |
|
| 86 |
+ |
|
| 87 |
+ /** |
|
| 88 |
+ * @author fenris |
|
| 89 |
+ */ |
|
| 90 |
+ public priskribo_legi() : string |
|
| 91 |
+ {
|
|
| 92 |
+ return this.priskribo; |
|
| 93 |
+ } |
|
| 94 |
+ |
|
| 95 |
+ |
|
| 96 |
+ /** |
|
| 97 |
+ * @author fenris |
|
| 98 |
+ */ |
|
| 99 |
+ public auxtoro_legi() : string |
|
| 100 |
+ {
|
|
| 101 |
+ return this.auxtoro; |
|
| 102 |
+ } |
|
| 103 |
+ |
|
| 104 |
+ |
|
| 105 |
+ /** |
|
| 106 |
+ * @author fenris |
|
| 107 |
+ */ |
|
| 108 |
+ public enigi(enigo : klaso_evento_eniga, eligi : (eligo : klaso_evento_eliga)=>void) : void |
|
| 109 |
+ {
|
|
| 110 |
+ let that : klaso_kromajxo = this; |
|
| 111 |
+ this.reagi |
|
| 112 |
+ ( |
|
| 113 |
+ enigo.kruda_al(), |
|
| 114 |
+ eligo_kruda => eligi(klaso_evento_eliga_mesagxo.kruda_de(eligo_kruda)) |
|
| 115 |
+ ) |
|
| 116 |
+ } |
|
| 117 |
+ |
|
| 118 |
+ |
|
| 119 |
+ /** |
|
| 120 |
+ * @author fenris |
|
| 121 |
+ */ |
|
| 122 |
+ protected abstract reagi(enigo_kruda : Object, eligi : (eligo_kruda : Object)=>void) : void; |
|
| 123 |
+ |
|
| 124 |
+} |
|
| 125 |
+ |
| ... | ... |
@@ -0,0 +1,54 @@ |
| 1 |
+/* |
|
| 2 |
+ |
|
| 3 |
+ IRC-Bot "Kvasir" |
|
| 4 |
+ Copyright (C) 2016 Fenris Wolf (fenris@folksprak.org) |
|
| 5 |
+ |
|
| 6 |
+ This program is free software: you can redistribute it and/or modify |
|
| 7 |
+ it under the terms of the GNU General Public License as published by |
|
| 8 |
+ the Free Software Foundation, either version 3 of the License, or |
|
| 9 |
+ (at your option) any later version. |
|
| 10 |
+ |
|
| 11 |
+ This program is distributed in the hope that it will be useful, |
|
| 12 |
+ but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 13 |
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 14 |
+ GNU General Public License for more details. |
|
| 15 |
+ |
|
| 16 |
+ You should have received a copy of the GNU General Public License |
|
| 17 |
+ along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 18 |
+ |
|
| 19 |
+*/ |
|
| 20 |
+ |
|
| 21 |
+{
|
|
| 22 |
+ "identigilo": "ehxado", |
|
| 23 |
+ "nomo": "Mesagx-Ehxado", |
|
| 24 |
+ "auxtoro": "fenris", |
|
| 25 |
+ "priskribo": "ripetas skribitajn mesagxojn", |
|
| 26 |
+ "reagi": function (enigo_kruda, respondi) |
|
| 27 |
+ {
|
|
| 28 |
+ switch (enigo_kruda["tipo"]) |
|
| 29 |
+ {
|
|
| 30 |
+ case "mesagxo": |
|
| 31 |
+ {
|
|
| 32 |
+ respondi |
|
| 33 |
+ ( |
|
| 34 |
+ {
|
|
| 35 |
+ "tipo": "mesagxo", |
|
| 36 |
+ "parametroj": |
|
| 37 |
+ {
|
|
| 38 |
+ "celo": enigo_kruda["parametroj"]["fonto"], |
|
| 39 |
+ "alparolato": enigo_kruda["parametroj"]["sendinto"], |
|
| 40 |
+ "enhavo": "vi estas skribinta la jenan mesagxon: „" + enigo_kruda["parametroj"]["enhavo"] + "“", |
|
| 41 |
+ } |
|
| 42 |
+ } |
|
| 43 |
+ ); |
|
| 44 |
+ break; |
|
| 45 |
+ } |
|
| 46 |
+ default: |
|
| 47 |
+ {
|
|
| 48 |
+ // console.warn("netraktata enigo '" + enigo_kruda["tipo"] + "'");
|
|
| 49 |
+ break; |
|
| 50 |
+ } |
|
| 51 |
+ } |
|
| 52 |
+ } |
|
| 53 |
+} |
|
| 54 |
+ |
| ... | ... |
@@ -0,0 +1,168 @@ |
| 1 |
+/* |
|
| 2 |
+ |
|
| 3 |
+ IRC-Bot "Kvasir" |
|
| 4 |
+ Copyright (C) 2016 Fenris Wolf (fenris@folksprak.org) |
|
| 5 |
+ |
|
| 6 |
+ This program is free software: you can redistribute it and/or modify |
|
| 7 |
+ it under the terms of the GNU General Public License as published by |
|
| 8 |
+ the Free Software Foundation, either version 3 of the License, or |
|
| 9 |
+ (at your option) any later version. |
|
| 10 |
+ |
|
| 11 |
+ This program is distributed in the hope that it will be useful, |
|
| 12 |
+ but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 13 |
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 14 |
+ GNU General Public License for more details. |
|
| 15 |
+ |
|
| 16 |
+ You should have received a copy of the GNU General Public License |
|
| 17 |
+ along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 18 |
+ |
|
| 19 |
+*/ |
|
| 20 |
+ |
|
| 21 |
+var _fs = require("fs");
|
|
| 22 |
+ |
|
| 23 |
+ |
|
| 24 |
+/** |
|
| 25 |
+ * @author fenris |
|
| 26 |
+ */ |
|
| 27 |
+class klaso_kromajxo_ekstera extends klaso_kromajxo |
|
| 28 |
+{
|
|
| 29 |
+ |
|
| 30 |
+ /** |
|
| 31 |
+ * @author fenris |
|
| 32 |
+ */ |
|
| 33 |
+ protected vojo : string; |
|
| 34 |
+ |
|
| 35 |
+ |
|
| 36 |
+ /** |
|
| 37 |
+ * @author fenris |
|
| 38 |
+ */ |
|
| 39 |
+ protected memoro : Object; |
|
| 40 |
+ |
|
| 41 |
+ |
|
| 42 |
+ /** |
|
| 43 |
+ * @author fenris |
|
| 44 |
+ */ |
|
| 45 |
+ protected reagi_ : (enigo_kruda : Object, eligi : (eligo_kruda : Object)=>void, memoro ?: Object)=>void; |
|
| 46 |
+ |
|
| 47 |
+ |
|
| 48 |
+ /** |
|
| 49 |
+ * @author fenris |
|
| 50 |
+ */ |
|
| 51 |
+ public constructor |
|
| 52 |
+ ( |
|
| 53 |
+ identigilo : string = null, |
|
| 54 |
+ nomo : string = null, |
|
| 55 |
+ priskribo : string = null, |
|
| 56 |
+ auxtoro : string = null, |
|
| 57 |
+ reagi_ : (enigo_kruda : Object, eligi : (eligo_kruda : Object)=>void)=>void |
|
| 58 |
+ ) |
|
| 59 |
+ {
|
|
| 60 |
+ super(identigilo, nomo, priskribo, auxtoro); |
|
| 61 |
+ this.reagi_ = reagi_; |
|
| 62 |
+ this.vojo = null; |
|
| 63 |
+ this.memoro = {};
|
|
| 64 |
+ } |
|
| 65 |
+ |
|
| 66 |
+ |
|
| 67 |
+ /** |
|
| 68 |
+ * @author fenris |
|
| 69 |
+ */ |
|
| 70 |
+ public resxargi(fino : (eraro : Error)=>void = function (eraro : Error) : void {}) : void
|
|
| 71 |
+ {
|
|
| 72 |
+ let that : klaso_kromajxo_ekstera = this; |
|
| 73 |
+ klaso_kromajxo_ekstera.sxargi |
|
| 74 |
+ ( |
|
| 75 |
+ this.vojo, |
|
| 76 |
+ function (eraro : Error, datumoj : Object) : void |
|
| 77 |
+ {
|
|
| 78 |
+ if (eraro != null) |
|
| 79 |
+ {
|
|
| 80 |
+ fino(eraro); |
|
| 81 |
+ } |
|
| 82 |
+ else |
|
| 83 |
+ {
|
|
| 84 |
+ that.nomo = datumoj["nomo"]; |
|
| 85 |
+ that.priskribo = datumoj["priskribo"]; |
|
| 86 |
+ that.auxtoro = datumoj["auxtoro"]; |
|
| 87 |
+ that.reagi_ = datumoj["reagi"]; |
|
| 88 |
+ fino(null); |
|
| 89 |
+ } |
|
| 90 |
+ } |
|
| 91 |
+ ); |
|
| 92 |
+ } |
|
| 93 |
+ |
|
| 94 |
+ |
|
| 95 |
+ /** |
|
| 96 |
+ * @author fenris |
|
| 97 |
+ */ |
|
| 98 |
+ protected reagi(enigo_kruda : Object, eligi : (eligo_kruda : Object)=>void) : void |
|
| 99 |
+ {
|
|
| 100 |
+ this.reagi_(enigo_kruda, eligi, this.memoro); |
|
| 101 |
+ } |
|
| 102 |
+ |
|
| 103 |
+ |
|
| 104 |
+ /** |
|
| 105 |
+ * @author fenris |
|
| 106 |
+ */ |
|
| 107 |
+ protected static sxargi(vojo : string, uzado : (eraro : Error, datumoj : Object)=>void) : void |
|
| 108 |
+ {
|
|
| 109 |
+ _fs.readFile |
|
| 110 |
+ ( |
|
| 111 |
+ vojo, |
|
| 112 |
+ {"encoding": "utf8", "flag": "r"},
|
|
| 113 |
+ function (eraro : Error, enhavo : string) : void |
|
| 114 |
+ {
|
|
| 115 |
+ if (eraro != null) |
|
| 116 |
+ {
|
|
| 117 |
+ uzado(eraro, null); |
|
| 118 |
+ } |
|
| 119 |
+ else |
|
| 120 |
+ {
|
|
| 121 |
+ try |
|
| 122 |
+ {
|
|
| 123 |
+ let datumoj : Object = eval("(function () {return (" + enhavo + ");})()");
|
|
| 124 |
+ uzado(null, datumoj); |
|
| 125 |
+ } |
|
| 126 |
+ catch (escepto) |
|
| 127 |
+ {
|
|
| 128 |
+ uzado(new Error(String(escepto)), null); |
|
| 129 |
+ } |
|
| 130 |
+ } |
|
| 131 |
+ } |
|
| 132 |
+ ); |
|
| 133 |
+ } |
|
| 134 |
+ |
|
| 135 |
+ |
|
| 136 |
+ /** |
|
| 137 |
+ * @author fenris |
|
| 138 |
+ */ |
|
| 139 |
+ public static krei(vojo : string, uzado : (eraro : Error, kromajxo : klaso_kromajxo_ekstera)=>void) : void |
|
| 140 |
+ {
|
|
| 141 |
+ klaso_kromajxo_ekstera.sxargi |
|
| 142 |
+ ( |
|
| 143 |
+ vojo, |
|
| 144 |
+ function (eraro : Error, datumoj : Object) : void |
|
| 145 |
+ {
|
|
| 146 |
+ if (eraro != null) |
|
| 147 |
+ {
|
|
| 148 |
+ uzado(eraro, null); |
|
| 149 |
+ } |
|
| 150 |
+ else |
|
| 151 |
+ {
|
|
| 152 |
+ let kromajxo : klaso_kromajxo_ekstera = new klaso_kromajxo_ekstera |
|
| 153 |
+ ( |
|
| 154 |
+ datumoj["identigilo"], |
|
| 155 |
+ datumoj["nomo"], |
|
| 156 |
+ datumoj["priskribo"], |
|
| 157 |
+ datumoj["auxtoro"], |
|
| 158 |
+ datumoj["reagi"] |
|
| 159 |
+ ); |
|
| 160 |
+ kromajxo.vojo = vojo; |
|
| 161 |
+ uzado(null, kromajxo); |
|
| 162 |
+ } |
|
| 163 |
+ } |
|
| 164 |
+ ); |
|
| 165 |
+ } |
|
| 166 |
+ |
|
| 167 |
+} |
|
| 168 |
+ |
| ... | ... |
@@ -0,0 +1,165 @@ |
| 1 |
+/* |
|
| 2 |
+ |
|
| 3 |
+ IRC-Bot "Kvasir" |
|
| 4 |
+ Copyright (C) 2016 Fenris Wolf (fenris@folksprak.org) |
|
| 5 |
+ |
|
| 6 |
+ This program is free software: you can redistribute it and/or modify |
|
| 7 |
+ it under the terms of the GNU General Public License as published by |
|
| 8 |
+ the Free Software Foundation, either version 3 of the License, or |
|
| 9 |
+ (at your option) any later version. |
|
| 10 |
+ |
|
| 11 |
+ This program is distributed in the hope that it will be useful, |
|
| 12 |
+ but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 13 |
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 14 |
+ GNU General Public License for more details. |
|
| 15 |
+ |
|
| 16 |
+ You should have received a copy of the GNU General Public License |
|
| 17 |
+ along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 18 |
+ |
|
| 19 |
+*/ |
|
| 20 |
+ |
|
| 21 |
+type tipo_agoj = {
|
|
| 22 |
+ anigxi ?: (kanalo : string, modo ?: boolean)=>void; |
|
| 23 |
+ malanigxi ?: (kanalo : string)=>void; |
|
| 24 |
+ listigi ?: (celo : string)=>void; |
|
| 25 |
+ detaloj ?: (identigilo : string, celo : string)=>void; |
|
| 26 |
+ sxalti ?: (identigilo : string, aktiva ?: boolean, celo ?: string)=>void; |
|
| 27 |
+ resxargi ?: (identigilo : string, celo ?: string)=>void; |
|
| 28 |
+ aldoni ?: (nomo : string, celo ?: string)=>void; |
|
| 29 |
+}; |
|
| 30 |
+ |
|
| 31 |
+ |
|
| 32 |
+/** |
|
| 33 |
+ * @author fenris |
|
| 34 |
+ */ |
|
| 35 |
+class klaso_kromajxo_stirado extends klaso_kromajxo |
|
| 36 |
+{
|
|
| 37 |
+ |
|
| 38 |
+ /** |
|
| 39 |
+ * @author fenris |
|
| 40 |
+ */ |
|
| 41 |
+ protected permesuloj : Array<string>; |
|
| 42 |
+ |
|
| 43 |
+ |
|
| 44 |
+ /** |
|
| 45 |
+ * @author fenris |
|
| 46 |
+ */ |
|
| 47 |
+ protected agoj : tipo_agoj; |
|
| 48 |
+ |
|
| 49 |
+ |
|
| 50 |
+ /** |
|
| 51 |
+ * @author fenris |
|
| 52 |
+ */ |
|
| 53 |
+ public constructor( |
|
| 54 |
+ permesuloj : Array<string> = new Array<string>(), |
|
| 55 |
+ agoj : tipo_agoj |
|
| 56 |
+ ) |
|
| 57 |
+ {
|
|
| 58 |
+ super("stirado", "Stirado", "stiras aliajn kromajxojn kaj elmontras informojn pri ili", "fenris");
|
|
| 59 |
+ this.permesuloj = permesuloj; |
|
| 60 |
+ this.agoj = agoj; |
|
| 61 |
+ } |
|
| 62 |
+ |
|
| 63 |
+ |
|
| 64 |
+ /** |
|
| 65 |
+ * @author fenris |
|
| 66 |
+ */ |
|
| 67 |
+ public reagi(enigo_kruda : Object, eligi : (eligo_kruda : Object)=>void) : void |
|
| 68 |
+ {
|
|
| 69 |
+ let that : klaso_kromajxo_stirado = this; |
|
| 70 |
+ |
|
| 71 |
+ function ujumi(foo : ()=>void) : void |
|
| 72 |
+ {
|
|
| 73 |
+ if (that.permesuloj.indexOf(enigo_kruda["parametroj"]["sendinto"]) >= 0) |
|
| 74 |
+ {
|
|
| 75 |
+ foo(); |
|
| 76 |
+ } |
|
| 77 |
+ else |
|
| 78 |
+ {
|
|
| 79 |
+ eligi |
|
| 80 |
+ ( |
|
| 81 |
+ {
|
|
| 82 |
+ "tipo": "mesagxo", |
|
| 83 |
+ "parametroj": |
|
| 84 |
+ {
|
|
| 85 |
+ "celo": enigo_kruda["parametroj"]["fonto"], |
|
| 86 |
+ "enhavo": "vi ne rajtas fari tion", |
|
| 87 |
+ } |
|
| 88 |
+ } |
|
| 89 |
+ ); |
|
| 90 |
+ } |
|
| 91 |
+ } |
|
| 92 |
+ switch (enigo_kruda["tipo"]) |
|
| 93 |
+ {
|
|
| 94 |
+ case "mesagxo": |
|
| 95 |
+ {
|
|
| 96 |
+ let resto : string = enigo_kruda["parametroj"]["enhavo"]; |
|
| 97 |
+ [ |
|
| 98 |
+ {
|
|
| 99 |
+ "skemoj": [new RegExp("^!\\W*(?:kanalo|k) (?:anigxi|a) ((?:#|\\w)+)$")],
|
|
| 100 |
+ "ago": x => ujumi(() => this.agoj.anigxi(x[0], true)), |
|
| 101 |
+ }, |
|
| 102 |
+ {
|
|
| 103 |
+ "skemoj": [new RegExp("^!\\W*(?:kanalo|k) (?:malanigxi|m) ((?:#|\\w)+)$")],
|
|
| 104 |
+ "ago": x => ujumi(() => this.agoj.anigxi(x[0], false)), |
|
| 105 |
+ }, |
|
| 106 |
+ {
|
|
| 107 |
+ "skemoj": [new RegExp("^!\\W*(?:kromajxo|x) (?:listigi|l)$")/*, new RegExp("$\|")*/],
|
|
| 108 |
+ "ago": x => this.agoj.listigi(enigo_kruda["parametroj"]["fonto"]), |
|
| 109 |
+ }, |
|
| 110 |
+ {
|
|
| 111 |
+ "skemoj": [new RegExp("^!\\W*(?:kromajxo|x) (?:detaloj|d) (\\w+)$")/*, new RegExp("$#(\\w+)")*/],
|
|
| 112 |
+ "ago": x => ujumi(() => this.agoj.detaloj(x[0], enigo_kruda["parametroj"]["fonto"])), |
|
| 113 |
+ }, |
|
| 114 |
+ {
|
|
| 115 |
+ "skemoj": [new RegExp("^!\\W*(?:kromajxo|x) (?:sxalti|s) (\\w+)$")/*, new RegExp("$~(\\w+)")*/],
|
|
| 116 |
+ "ago": x => ujumi(() => this.agoj.sxalti(x[0], undefined, enigo_kruda["parametroj"]["fonto"])), |
|
| 117 |
+ }, |
|
| 118 |
+ {
|
|
| 119 |
+ "skemoj": [new RegExp("^!\\W*(?:kromajxo|x) (?:aktivigi|a) (\\w+)$")/*, new RegExp("$\+(\\w+)")*/],
|
|
| 120 |
+ "ago": x => ujumi(() => this.agoj.sxalti(x[0], true, enigo_kruda["parametroj"]["fonto"])), |
|
| 121 |
+ }, |
|
| 122 |
+ {
|
|
| 123 |
+ "skemoj": [new RegExp("^!\\W*(?:kromajxo|x) (?:malaktivigi|m) (\\w+)$")/*, new RegExp("$-(\\w+)")*/],
|
|
| 124 |
+ "ago": x => ujumi(() => this.agoj.sxalti(x[0], false, enigo_kruda["parametroj"]["fonto"])), |
|
| 125 |
+ }, |
|
| 126 |
+ {
|
|
| 127 |
+ "skemoj": [new RegExp("^!\\W*(?:kromajxo|x) (?:resxargi|r) (\\w+)$")/*, new RegExp("$#(\\w+)")*/],
|
|
| 128 |
+ "ago": x => ujumi(() => this.agoj.resxargi(x[0], enigo_kruda["parametroj"]["fonto"])), |
|
| 129 |
+ }, |
|
| 130 |
+ {
|
|
| 131 |
+ "skemoj": [new RegExp("^!\\W*(?:kromajxo|x) (?:aldoni|p) (\\w+)$")/*, new RegExp("$\*(\\w+)")*/],
|
|
| 132 |
+ "ago": x => ujumi(() => that.agoj.aldoni(x[0], enigo_kruda["parametroj"]["fonto"])), |
|
| 133 |
+ }, |
|
| 134 |
+ ].forEach |
|
| 135 |
+ ( |
|
| 136 |
+ function (ero : Object) : void |
|
| 137 |
+ {
|
|
| 138 |
+ ero["skemoj"].some |
|
| 139 |
+ ( |
|
| 140 |
+ function (skemo : RegExp) : boolean |
|
| 141 |
+ {
|
|
| 142 |
+ let sercxo : any = resto.match(skemo); |
|
| 143 |
+ if (sercxo != null) |
|
| 144 |
+ {
|
|
| 145 |
+ ero["ago"](sercxo.slice(1)); |
|
| 146 |
+ return true; |
|
| 147 |
+ } |
|
| 148 |
+ else |
|
| 149 |
+ {
|
|
| 150 |
+ return false; |
|
| 151 |
+ } |
|
| 152 |
+ } |
|
| 153 |
+ ); |
|
| 154 |
+ } |
|
| 155 |
+ ); |
|
| 156 |
+ } |
|
| 157 |
+ default: |
|
| 158 |
+ {
|
|
| 159 |
+ break; |
|
| 160 |
+ } |
|
| 161 |
+ } |
|
| 162 |
+ } |
|
| 163 |
+ |
|
| 164 |
+} |
|
| 165 |
+ |
| ... | ... |
@@ -0,0 +1,37 @@ |
| 1 |
+IRC-Bot "Kvasir" |
|
| 2 |
+Copyright (C) 2016 Fenris Wolf (fenris@folksprak.org) |
|
| 3 |
+ |
|
| 4 |
+This program is free software: you can redistribute it and/or modify |
|
| 5 |
+it under the terms of the GNU General Public License as published by |
|
| 6 |
+the Free Software Foundation, either version 3 of the License, or |
|
| 7 |
+(at your option) any later version. |
|
| 8 |
+ |
|
| 9 |
+This program is distributed in the hope that it will be useful, |
|
| 10 |
+but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 11 |
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 12 |
+GNU General Public License for more details. |
|
| 13 |
+ |
|
| 14 |
+You should have received a copy of the GNU General Public License |
|
| 15 |
+along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 16 |
+ |
|
| 17 |
+ |
|
| 18 |
+== Kio estas bezonata? == |
|
| 19 |
+ |
|
| 20 |
+Vi bezonas la jenajn programojn: |
|
| 21 |
+ - npm |
|
| 22 |
+ - TypeScript-kompililo (ekz. per "npm install -g tsc") |
|
| 23 |
+ - nodejs-pakajxo "irc": "mkdir --parents kreajxo && cd kreajxo && npm install irc ; cd -" |
|
| 24 |
+ - GNU-Make |
|
| 25 |
+ |
|
| 26 |
+ |
|
| 27 |
+== Kiel kompili la fontojn? == |
|
| 28 |
+ |
|
| 29 |
+Efektivigu la jenan komandon: |
|
| 30 |
+ "make kompili" |
|
| 31 |
+ |
|
| 32 |
+ |
|
| 33 |
+== Kiel lancxi la roboton? == |
|
| 34 |
+ |
|
| 35 |
+Post kompilado oni povas uzi la jenan komandon por lancxi la roboton: |
|
| 36 |
+ "make lancxi" |
|
| 37 |
+ |
| ... | ... |
@@ -0,0 +1,39 @@ |
| 1 |
+var_fontoj := |
|
| 2 |
+var_fontoj := ${var_fontoj} fontoj/bazo/tipoj.ts
|
|
| 3 |
+var_fontoj := ${var_fontoj} fontoj/bazo/vokado.ts
|
|
| 4 |
+var_fontoj := ${var_fontoj} fontoj/bazo/cxeno.ts
|
|
| 5 |
+var_fontoj := ${var_fontoj} fontoj/bazo/vico.ts
|
|
| 6 |
+var_fontoj := ${var_fontoj} fontoj/eventoj/evento.ts
|
|
| 7 |
+var_fontoj := ${var_fontoj} fontoj/eventoj/eventoj_enigaj/evento_eniga.ts
|
|
| 8 |
+var_fontoj := ${var_fontoj} fontoj/eventoj/eventoj_enigaj/evento_eniga_mesagxo.ts
|
|
| 9 |
+var_fontoj := ${var_fontoj} fontoj/eventoj/eventoj_eligaj/evento_eliga.ts
|
|
| 10 |
+var_fontoj := ${var_fontoj} fontoj/eventoj/eventoj_eligaj/evento_eliga_mesagxo.ts
|
|
| 11 |
+var_fontoj := ${var_fontoj} fontoj/kromajxoj/kromajxo.ts
|
|
| 12 |
+var_fontoj := ${var_fontoj} fontoj/kromajxoj/kromajxo_stirado.ts
|
|
| 13 |
+var_fontoj := ${var_fontoj} fontoj/kromajxoj/kromajxo_ekstera.ts
|
|
| 14 |
+var_fontoj := ${var_fontoj} fontoj/klientoj/kliento.ts
|
|
| 15 |
+var_fontoj := ${var_fontoj} fontoj/klientoj/kliento_pseuxda.ts
|
|
| 16 |
+var_fontoj := ${var_fontoj} fontoj/klientoj/kliento_irc.ts
|
|
| 17 |
+var_fontoj := ${var_fontoj} fontoj/cxefajxo.ts
|
|
| 18 |
+ |
|
| 19 |
+defauxlto: kompili |
|
| 20 |
+.PHONY: defauxlto |
|
| 21 |
+ |
|
| 22 |
+lancxi: kreajxo/kvasir.js |
|
| 23 |
+ @ echo ">> lancxado ..." |
|
| 24 |
+ @ nodejs kreajxo/kvasir.js |
|
| 25 |
+.PHONY: lancxi |
|
| 26 |
+ |
|
| 27 |
+kompili: kreajxo/kvasir.js |
|
| 28 |
+.PHONY: kompili |
|
| 29 |
+ |
|
| 30 |
+kreajxo/kvasir.js: ${var_fontoj}
|
|
| 31 |
+ @ echo ">> kompilado ..." |
|
| 32 |
+ @ mkdir --parents kreajxo |
|
| 33 |
+ @ tsc --target ES5 ${var_fontoj} --outFile kreajxo/kvasir.js
|
|
| 34 |
+ |
|
| 35 |
+nuligi: |
|
| 36 |
+ @ echo ">> nuligado ..." |
|
| 37 |
+ rm --recursive kreajxo |
|
| 38 |
+.PHONY: nuligi |
|
| 39 |
+ |
|
| 0 | 40 |