wrapper
This commit is contained in:
98
src/bot.js
98
src/bot.js
@ -1,25 +1,87 @@
|
||||
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(() => {
|
||||
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'))();
|
||||
config.read()
|
||||
.then(
|
||||
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 );
|
||||
}
|
||||
)*/
|
||||
function checkRepost(link) {
|
||||
return new Promise((resolve, reject) => {
|
||||
resolve( link );
|
||||
});
|
||||
}*/
|
@ -22,7 +22,7 @@ const read = () => new Promise((resolve, reject) => {
|
||||
return parseInt(value);
|
||||
break;
|
||||
case 'bool':
|
||||
return (value === 'true')?true:false;
|
||||
return value === 'true';
|
||||
break;
|
||||
case 'json':
|
||||
return JSON.parse(value);
|
||||
|
@ -1,25 +1,6 @@
|
||||
var factory = require(__dirname+'/../inc/api');
|
||||
var fs = require('fs');
|
||||
var self = Lib.prototype;
|
||||
import { cfg } from './cfg.js';
|
||||
|
||||
self.api = new factory.Api();
|
||||
|
||||
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 = () => {
|
||||
const loadEvents = () => {
|
||||
var files = fs.readdirSync(__dirname+'/events/');
|
||||
files.forEach(file => {
|
||||
if(file.substr(-3, 3) === '.js') {
|
||||
@ -29,33 +10,4 @@ self.loadEvents = () => {
|
||||
});
|
||||
};
|
||||
|
||||
self.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: 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');
|
||||
};
|
||||
export { loadEvents };
|
100
src/inc/wrapper.js
Normal file
100
src/inc/wrapper.js
Normal 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 };
|
Reference in New Issue
Block a user