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

View File

@ -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);

View File

View File

@ -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
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 };