This commit is contained in:
Flummi 2017-11-08 12:56:04 +01:00
parent 4bbee1160d
commit 9d6f4c0f2c
7 changed files with 379 additions and 73 deletions

197
package-lock.json generated
View File

@ -60,6 +60,15 @@
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"array.prototype.findindex": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/array.prototype.findindex/-/array.prototype.findindex-2.0.2.tgz",
"integrity": "sha1-WAaNJYh+9QXknckssAxE3O5VsGc=",
"requires": {
"define-properties": "1.1.2",
"es-abstract": "1.9.0"
}
},
"asn1": { "asn1": {
"version": "0.2.3", "version": "0.2.3",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
@ -801,6 +810,14 @@
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"bl": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz",
"integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=",
"requires": {
"readable-stream": "2.3.3"
}
},
"bluebird": { "bluebird": {
"version": "3.5.1", "version": "3.5.1",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
@ -952,11 +969,25 @@
"ms": "2.0.0" "ms": "2.0.0"
} }
}, },
"define-properties": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz",
"integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=",
"requires": {
"foreach": "2.0.5",
"object-keys": "1.0.11"
}
},
"delayed-stream": { "delayed-stream": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
}, },
"depd": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
"integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k="
},
"detect-indent": { "detect-indent": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
@ -975,6 +1006,36 @@
"jsbn": "0.1.1" "jsbn": "0.1.1"
} }
}, },
"end-of-stream": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz",
"integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=",
"requires": {
"once": "1.4.0"
}
},
"es-abstract": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.9.0.tgz",
"integrity": "sha512-kk3IJoKo7A3pWJc0OV8yZ/VEX2oSUytfekrJiqoxBlKJMFAJVJVpGdHClCCTdv+Fn2zHfpDHHIelMFhZVfef3Q==",
"requires": {
"es-to-primitive": "1.1.1",
"function-bind": "1.1.1",
"has": "1.0.1",
"is-callable": "1.1.3",
"is-regex": "1.0.4"
}
},
"es-to-primitive": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz",
"integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=",
"requires": {
"is-callable": "1.1.3",
"is-date-object": "1.0.1",
"is-symbol": "1.0.1"
}
},
"escape-string-regexp": { "escape-string-regexp": {
"version": "1.0.5", "version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
@ -992,6 +1053,11 @@
"resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.13.tgz", "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.13.tgz",
"integrity": "sha1-Coq5f5wbVjNhuJJ/noBgYndQkVM=" "integrity": "sha1-Coq5f5wbVjNhuJJ/noBgYndQkVM="
}, },
"eventemitter3": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz",
"integrity": "sha1-teEHm1n7XhuidxwKmTvgYKWMmbo="
},
"expand-brackets": { "expand-brackets": {
"version": "0.1.5", "version": "0.1.5",
"resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
@ -1042,6 +1108,11 @@
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
}, },
"file-type": {
"version": "3.9.0",
"resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz",
"integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek="
},
"filename-regex": { "filename-regex": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
@ -1080,6 +1151,11 @@
"for-in": "1.0.2" "for-in": "1.0.2"
} }
}, },
"foreach": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
"integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k="
},
"forever-agent": { "forever-agent": {
"version": "0.6.1", "version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
@ -1786,6 +1862,11 @@
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true "dev": true
}, },
"function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
},
"getpass": { "getpass": {
"version": "0.1.7", "version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
@ -1861,6 +1942,14 @@
"har-schema": "1.0.5" "har-schema": "1.0.5"
} }
}, },
"has": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz",
"integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=",
"requires": {
"function-bind": "1.1.1"
}
},
"has-ansi": { "has-ansi": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
@ -1956,6 +2045,9 @@
"resolved": "https://registry.npmjs.org/irc-message/-/irc-message-2.0.1.tgz", "resolved": "https://registry.npmjs.org/irc-message/-/irc-message-2.0.1.tgz",
"integrity": "sha1-3AJ1lTmgMMlq82rW/I/ukIPffLw=" "integrity": "sha1-3AJ1lTmgMMlq82rW/I/ukIPffLw="
}, },
"irc-socket": {
"version": "github:ircanywhere/irc-socket#19343600ce38460c9c8d7b7b265ac23313153342"
},
"is-binary-path": { "is-binary-path": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
@ -1972,6 +2064,16 @@
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
"dev": true "dev": true
}, },
"is-callable": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz",
"integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI="
},
"is-date-object": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
"integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY="
},
"is-dotfile": { "is-dotfile": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
@ -2044,6 +2146,19 @@
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"is-regex": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
"integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
"requires": {
"has": "1.0.1"
}
},
"is-symbol": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz",
"integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI="
},
"is-typedarray": { "is-typedarray": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
@ -2184,6 +2299,11 @@
"regex-cache": "0.4.4" "regex-cache": "0.4.4"
} }
}, },
"mime": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
"integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ=="
},
"mime-db": { "mime-db": {
"version": "1.27.0", "version": "1.27.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz",
@ -2235,6 +2355,24 @@
"sqlstring": "2.3.0" "sqlstring": "2.3.0"
} }
}, },
"node-telegram-bot-api": {
"version": "0.29.0",
"resolved": "https://registry.npmjs.org/node-telegram-bot-api/-/node-telegram-bot-api-0.29.0.tgz",
"integrity": "sha512-WZBp5ccr0zMLRNtZ3avrevGpj05mrN59lDmxgpltls0bl3W/wqyNalNGKatTZEJ1cY0pctgd9FqKyCzWr36HcQ==",
"requires": {
"array.prototype.findindex": "2.0.2",
"bl": "1.2.1",
"bluebird": "3.5.1",
"debug": "2.6.8",
"depd": "1.1.1",
"eventemitter3": "2.0.3",
"file-type": "3.9.0",
"mime": "1.4.1",
"pump": "1.0.2",
"request": "2.81.0",
"request-promise": "4.2.2"
}
},
"nodejs-mysql": { "nodejs-mysql": {
"version": "0.1.3", "version": "0.1.3",
"resolved": "https://registry.npmjs.org/nodejs-mysql/-/nodejs-mysql-0.1.3.tgz", "resolved": "https://registry.npmjs.org/nodejs-mysql/-/nodejs-mysql-0.1.3.tgz",
@ -2270,6 +2408,11 @@
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
"dev": true "dev": true
}, },
"object-keys": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz",
"integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0="
},
"object.omit": { "object.omit": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
@ -2285,7 +2428,6 @@
"version": "1.4.0", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"dev": true,
"requires": { "requires": {
"wrappy": "1.0.2" "wrappy": "1.0.2"
} }
@ -2360,6 +2502,15 @@
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
"integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
}, },
"pump": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/pump/-/pump-1.0.2.tgz",
"integrity": "sha1-Oz7mUS+U8OV1U4wXmV+fFpkKXVE=",
"requires": {
"end-of-stream": "1.4.0",
"once": "1.4.0"
}
},
"punycode": { "punycode": {
"version": "1.4.1", "version": "1.4.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
@ -2566,6 +2717,42 @@
"uuid": "3.1.0" "uuid": "3.1.0"
} }
}, },
"request-promise": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.2.tgz",
"integrity": "sha1-0epG1lSm7k+O5qT+oQGMIpEZBLQ=",
"requires": {
"bluebird": "3.5.1",
"request-promise-core": "1.1.1",
"stealthy-require": "1.1.1",
"tough-cookie": "2.3.3"
},
"dependencies": {
"tough-cookie": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz",
"integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=",
"requires": {
"punycode": "1.4.1"
}
}
}
},
"request-promise-core": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz",
"integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=",
"requires": {
"lodash": "4.17.4"
},
"dependencies": {
"lodash": {
"version": "4.17.4",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
"integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4="
}
}
},
"safe-buffer": { "safe-buffer": {
"version": "5.1.1", "version": "5.1.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
@ -2639,6 +2826,11 @@
} }
} }
}, },
"stealthy-require": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
"integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks="
},
"streamify": { "streamify": {
"version": "0.2.9", "version": "0.2.9",
"resolved": "https://registry.npmjs.org/streamify/-/streamify-0.2.9.tgz", "resolved": "https://registry.npmjs.org/streamify/-/streamify-0.2.9.tgz",
@ -2750,8 +2942,7 @@
"wrappy": { "wrappy": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
"dev": true
}, },
"youtube-dl": { "youtube-dl": {
"version": "1.12.2", "version": "1.12.2",

View File

@ -19,6 +19,7 @@
"irc-socket": "github:ircanywhere/irc-socket", "irc-socket": "github:ircanywhere/irc-socket",
"json-stringify-safe": "^5.0.0", "json-stringify-safe": "^5.0.0",
"lodash": "2.4.1", "lodash": "2.4.1",
"node-telegram-bot-api": "^0.29.0",
"nodejs-mysql": "^0.1.3", "nodejs-mysql": "^0.1.3",
"pause-queue": "~0.1.0", "pause-queue": "~0.1.0",
"safe-eval": "^0.3.0", "safe-eval": "^0.3.0",

View File

@ -1,25 +1,87 @@
import { cfg, read } from './inc/cfg.js'; import { cfg, read } from './inc/cfg.js';
import { wrapper } from './inc/wrapper.js';
//const TelegramBot = require('node-telegram-bot-api');
//const safeEval = require('safe-eval');
//const util = require('util');
//const fs = require('fs');
//const ytdl = util.promisify(require('youtube-dl').getInfo);
read().then(() => { read().then(() => {
console.log( cfg ); let bot = new wrapper();
bot.on('message', msg => {
console.log( msg );
});
});
/*const lib = new (require(`${__dirname}/inc/lib`))(cfg);
lib.events.on('message', msg => {
if( msg.event[1] === "privmsg" ) {
const e = lib.reply( msg );
console.log( `IRC: (${e.time}) ${e.network} -> ${e.channel} -> ${e.user.nick}: ${e.message}` );
}
});
const bot = new TelegramBot("381368731:AAFalG-LknIbtBDuOvRXcxHUEK9Jg_o1UCw", { polling: true });
bot.on('message', (msg) => {
var e = lib.replytg(bot, msg);
console.log( `TG: (${e.time}) ${e.channel} -> ${e.user.nick}: ${e.message}` );
switch(e.message) {
case "1":
e.reply("normal");
break;
default:
//if(e.user.nick === "Flummi" || e.user.nick === "jkhsjdhjs" || e.user.nick === "Flummsi" || e.user.nick === "mrhanky" || e.user.nick === "gz") {
if(e.message.match(/^\.js /)) { // JS-Sandbox
let args = e.message.substring(3);
var context = {
e: e,
msg: msg
}
try {
var output = safeEval(args, context);
if(typeof output !== undefined && output !== 'undefined' && output) {
let blah = JSON.stringify( output );
if(blah != "Converting circular structure to JSON")
e.reply( blah.length > 250 ? `holy fuck, Ausgabe wäre viel zu lang! (${blah.length} Zeichen :DDDDDD)` : blah );
}
}
catch(err) {
e.reply(err.message);
}
}
else if(e.message.match(/https?:\/\/[\w-]+(\.[\w-]+)+\.?(:\d+)?(\/\S*)?/gi)) { // parser
let links = e.message.match(/https?:\/\/[\w-]+(\.[\w-]+)+\.?(:\d+)?(\/\S*)?/gi);
const args = [
//"-j",
//"-q",
"--no-progress",
"--no-warnings",
"--no-check-certificate",
"--max-filesize 500m",
'-o "./tmp/%(title)s.%(ext)s"'
];
Promise.all( links.map( link => checkRepost( link ) ) ) // repostcheck
.then( res => Promise.all( res.map( link => ytdl(link) ) ) ) // get informations
.then( res => {
res.forEach( data => {
e.reply( data.title );
});
});
}
//}
break;
}
});
}); });
/*var config = new (require(__dirname+'/inc/cfg'))(); function checkRepost(link) {
config.read() return new Promise((resolve, reject) => {
.then( resolve( link );
data => { });
config.cfg = data; }*/
var lib = new (require(__dirname+'/inc/lib'))(config.cfg);
lib.events.on('message', function(msg) {
if( msg.event[1] === 'privmsg' ) {
var e = lib.reply(msg);
console.log( `(${e.time}) ${e.network} -> ${e.channel} -> ${e.user.nick}: ${e.message}` );
}
});
},
err => {
console.log( "error! " + err );
}
)*/

View File

@ -22,7 +22,7 @@ const read = () => new Promise((resolve, reject) => {
return parseInt(value); return parseInt(value);
break; break;
case 'bool': case 'bool':
return (value === 'true')?true:false; return value === 'true';
break; break;
case 'json': case 'json':
return JSON.parse(value); return JSON.parse(value);

View File

View File

@ -1,25 +1,6 @@
var factory = require(__dirname+'/../inc/api'); import { cfg } from './cfg.js';
var fs = require('fs');
var self = Lib.prototype;
self.api = new factory.Api(); const loadEvents = () => {
var options = {
events: 31920,
rpc: 31930,
automaticSetup: true
};
self.interfaces = self.api.connect(options);
self.events = self.interfaces.events;
self.rpc = self.interfaces.rpc;
module.exports = Lib;
function Lib(config) {
self.cfg = config;
self.loadEvents();
}
self.loadEvents = () => {
var files = fs.readdirSync(__dirname+'/events/'); var files = fs.readdirSync(__dirname+'/events/');
files.forEach(file => { files.forEach(file => {
if(file.substr(-3, 3) === '.js') { if(file.substr(-3, 3) === '.js') {
@ -29,33 +10,4 @@ self.loadEvents = () => {
}); });
}; };
self.reply = (tmp) => { export { loadEvents };
return {
network: tmp.event[0],
channel: tmp.message.target,
user: {
nick: tmp.message.nickname,
username: tmp.message.username,
hostname: tmp.message.hostname
},
message: tmp.message.message,
time: tmp.message.time,
reply: function(msg) {
self.rpc.emit('call', this.event[0], 'privmsg', [ this.message.target, msg ]);
}.bind(tmp),
replyAction: function(msg) {
self.rpc.emit('call', this.event[0], 'privmsg', [ this.message.target, '\u0001' + 'ACTION ' + msg + '\u0001' ]);
}.bind(tmp),
replyNotice: function(msg) {
self.rpc.emit('call', this.event[0], 'notice', [ this.message.target, msg ]);
}.bind(tmp)
};
};
self.loadIRC = () => {
for(let srv in self.cfg.irc) {
self.rpc.emit( 'createClient', srv, self.cfg.irc[srv] );
console.log('Loading server', srv);
}
console.log('All servers have been loaded successfully');
};

100
src/inc/wrapper.js Normal file
View File

@ -0,0 +1,100 @@
import { cfg, read } from './cfg.js';
import { loadEvents } from './lib.js';
//const TelegramBot = require('node-telegram-bot-api');
const safeEval = require('safe-eval');
const util = require('util');
const fs = require('fs');
const ytdl = util.promisify(require('youtube-dl').getInfo);
var EventEmitter = require('events').EventEmitter;
let irc = (new (require(`${__dirname}/irc/api`)).Api()).connect({
events: 31920,
rpc: 31930,
automaticSetup: true
});
const wrapper = function() {
//loadIRC();
//loadEvents();
//rpc.emit('call', 'n0xy', 'privmsg', [ '#kbot-dev', 'blah' ]);
for(let srv in cfg.irc) {
irc.rpc.emit('createClient', srv, cfg.irc[srv]);
console.log('Loading server', srv);
}
console.log('All servers have been loaded successfully');
const tg = new (require('node-telegram-bot-api'))('381368731:AAFalG-LknIbtBDuOvRXcxHUEK9Jg_o1UCw', { polling: true });
irc.events.on('message', msg => {
this.emit('message', msg);
//if( msg.event[1] === "privmsg" ) {
// let e = reply( msg );
// console.log( `IRC: (${e.time}) ${e.network} -> ${e.channel} -> ${e.user.nick}: ${e.message}` );
//}
});
tg.on('message', msg => {
this.emit('message', msg);
//let e = replytg(tg, msg);
//console.log( `TG: (${e.time}) ${e.channel} -> ${e.user.nick}: ${e.message}` );
});
};
const reply = tmp => {
return {
network: tmp.event[0],
channel: tmp.message.target,
user: {
nick: tmp.message.nickname,
username: tmp.message.username,
hostname: tmp.message.hostname
},
message: tmp.message.message,
time: tmp.message.time,
reply: msg => {
rpc.emit('call', this.network, 'privmsg', [ this.channel, msg ]);
},
replyAction: msg => {
rpc.emit('call', this.network, 'privmsg', [ this.channel, '\u0001' + 'ACTION ' + msg + '\u0001' ]);
},
replyNotice: msg => {
rpc.emit('call', this.network, 'notice', [ this.channel, msg ]);
}
};
};
const replytg = (bot, tmp) => {
return {
channel: tmp.chat.title,
channelid: tmp.chat.id,
user: {
nick: tmp.from.first_name,
username: tmp.from.username
},
message: tmp.text,
time: tmp.date,
reply: function(msg) {
bot.sendMessage(this.channelid, msg);
}.bind(this),
replyAction: function(msg) {
bot.sendMessage(this.channelid, msg);
},
replyNotice: function(msg) {
bot.sendMessage(this.channelid, msg);
}
};
};
const loadIRC = () => {
for(let srv in cfg.irc) {
rpc.emit('createClient', srv, cfg.irc[srv]);
console.log('Loading server', srv);
}
console.log('All servers have been loaded successfully');
};
util.inherits(wrapper, EventEmitter);
export default { wrapper };