From 6611559b2664f3c21de8aae3e8acde88af98eca5 Mon Sep 17 00:00:00 2001 From: Flummi Date: Fri, 18 Nov 2016 06:30:38 +0100 Subject: [PATCH 1/7] triggertest --- src/trigger/trigger.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 src/trigger/trigger.js diff --git a/src/trigger/trigger.js b/src/trigger/trigger.js new file mode 100644 index 0000000..3d3a277 --- /dev/null +++ b/src/trigger/trigger.js @@ -0,0 +1,16 @@ +module.exports = (lib) => { + lib.trigger.add({ + name: 'trigger', + call: /^!trigger/i, + level: 100, + active: 1, + func: (e) => { + var output = ""; + lib.trigger.trigger.forEach(e => { + output += lib.bot.format.get( (e.active)?'green':'red' )+" "+e.name; + }); + e.reply(output); + }, + desc: 'muh' + }); +}; \ No newline at end of file From cd97c2938c098aa8482d445d2c9d8b6de692976c Mon Sep 17 00:00:00 2001 From: Flummi Date: Fri, 18 Nov 2016 06:32:55 +0100 Subject: [PATCH 2/7] triggertest --- src/trigger/trigger.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/trigger/trigger.js b/src/trigger/trigger.js index 3d3a277..e892250 100644 --- a/src/trigger/trigger.js +++ b/src/trigger/trigger.js @@ -6,6 +6,7 @@ module.exports = (lib) => { active: 1, func: (e) => { var output = ""; + e.reply("Trigger in "+e.channel.getName()+" (green: activated, red: deactivated):"); lib.trigger.trigger.forEach(e => { output += lib.bot.format.get( (e.active)?'green':'red' )+" "+e.name; }); From 92c4e2ae36ae812165de99687776306ffb6aa8b1 Mon Sep 17 00:00:00 2001 From: Flummi Date: Fri, 18 Nov 2016 07:56:12 +0100 Subject: [PATCH 3/7] muh --- src/lib.js | 44 +++++++++++++++++++++++------------------- src/trigger/trigger.js | 28 +++++++++++++++++++++------ 2 files changed, 46 insertions(+), 26 deletions(-) diff --git a/src/lib.js b/src/lib.js index 343844b..8defd53 100644 --- a/src/lib.js +++ b/src/lib.js @@ -230,26 +230,30 @@ self.levelToModes = level => { self.getcfg = (kat, cb) => { // main, websrv, irc var out = {}; - self.sql.query("select * from `f0ck`.`cfg` where `class` = ?", kat, (err, rows) => { - rows.forEach(e => { - out[e.key] = ((type, value) => { - switch(type) { - case 'string': - return value; - break; - case 'int': - return parseInt(value); - break; - case 'bool': - return (value === 'true')?true:false; - break; - case 'json': - return JSON.parse(value); - break; - } - })(e.type, e.value); - }); - if(cb) cb(out); + self.sql.query("select * from `f0ck`.`cfg` where `class` = ?"+(arguments[2]?"&& `key` = '"+arguments[2]:"")')", kat, (err, rows) => { + if(err || !rows) + cb(err); + else { + rows.forEach(e => { + out[e.key] = ((type, value) => { + switch(type) { + case 'string': + return value; + break; + case 'int': + return parseInt(value); + break; + case 'bool': + return (value === 'true')?true:false; + break; + case 'json': + return JSON.parse(value); + break; + } + })(e.type, e.value); + }); + if(cb) cb(out); + } }); }; diff --git a/src/trigger/trigger.js b/src/trigger/trigger.js index e892250..9983f78 100644 --- a/src/trigger/trigger.js +++ b/src/trigger/trigger.js @@ -5,12 +5,28 @@ module.exports = (lib) => { level: 100, active: 1, func: (e) => { - var output = ""; - e.reply("Trigger in "+e.channel.getName()+" (green: activated, red: deactivated):"); - lib.trigger.trigger.forEach(e => { - output += lib.bot.format.get( (e.active)?'green':'red' )+" "+e.name; - }); - e.reply(output); + var args = e.message.split(' '); + + switch(args[1]) { + case "cfg": + lib.getcfg('trigger_'+e.network+'_'+e.channel, cb => { + if(!cb) { + e.reply(cb); + } + else { + e.reply('muh'); + } + }); + break; + default: + var output = ""; + e.reply("Trigger in "+e.channel.getName()+" (green: activated, red: deactivated):"); + lib.trigger.trigger.forEach(e => { + output += lib.bot.format.get( (e.active)?'green':'red' )+" "+e.name; + }); + e.reply(output); + break; + } }, desc: 'muh' }); From 17b014c6506c308929bd3d47296f708f357a71bc Mon Sep 17 00:00:00 2001 From: Flummi Date: Fri, 18 Nov 2016 07:57:36 +0100 Subject: [PATCH 4/7] fix --- src/lib.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib.js b/src/lib.js index 8defd53..1238d0e 100644 --- a/src/lib.js +++ b/src/lib.js @@ -230,7 +230,7 @@ self.levelToModes = level => { self.getcfg = (kat, cb) => { // main, websrv, irc var out = {}; - self.sql.query("select * from `f0ck`.`cfg` where `class` = ?"+(arguments[2]?"&& `key` = '"+arguments[2]:"")')", kat, (err, rows) => { + self.sql.query("select * from `f0ck`.`cfg` where `class` = ?"+(arguments[2]?"&& `key` = '"+arguments[2]+"'":""), kat, (err, rows) => { if(err || !rows) cb(err); else { From d998cfb26d1e44b9aed90313bab08768738cf9c8 Mon Sep 17 00:00:00 2001 From: Flummi Date: Fri, 18 Nov 2016 08:14:35 +0100 Subject: [PATCH 5/7] shit --- src/lib.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib.js b/src/lib.js index 1238d0e..eac0cec 100644 --- a/src/lib.js +++ b/src/lib.js @@ -230,7 +230,7 @@ self.levelToModes = level => { self.getcfg = (kat, cb) => { // main, websrv, irc var out = {}; - self.sql.query("select * from `f0ck`.`cfg` where `class` = ?"+(arguments[2]?"&& `key` = '"+arguments[2]+"'":""), kat, (err, rows) => { + self.sql.query("select * from `f0ck`.`cfg` where `class` = ?"+(arguments[2]?" && `key` = '"+arguments[2]+"'":""), kat, (err, rows) => { if(err || !rows) cb(err); else { From e53573c28aae0ba693eab8e88976657788f50510 Mon Sep 17 00:00:00 2001 From: Flummi Date: Fri, 18 Nov 2016 08:16:58 +0100 Subject: [PATCH 6/7] shit --- src/lib.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib.js b/src/lib.js index eac0cec..fe6e3bf 100644 --- a/src/lib.js +++ b/src/lib.js @@ -231,7 +231,7 @@ self.getcfg = (kat, cb) => { // main, websrv, irc var out = {}; self.sql.query("select * from `f0ck`.`cfg` where `class` = ?"+(arguments[2]?" && `key` = '"+arguments[2]+"'":""), kat, (err, rows) => { - if(err || !rows) + if(err || rows.length < 1) cb(err); else { rows.forEach(e => { From b2e811915544878125a599b640e46af3550bc822 Mon Sep 17 00:00:00 2001 From: Flummi Date: Sat, 19 Nov 2016 06:33:59 +0100 Subject: [PATCH 7/7] channeltrigger toggable --- src/events/message.js | 25 ++++++++++----- src/lib.js | 25 +++++++++++++-- src/trigger/trigger.js | 69 ++++++++++++++++++++++++++++++------------ 3 files changed, 88 insertions(+), 31 deletions(-) diff --git a/src/events/message.js b/src/events/message.js index 67d1b28..2711aea 100644 --- a/src/events/message.js +++ b/src/events/message.js @@ -1,14 +1,23 @@ module.exports = (lib) => { lib.bot.on('message', (e) => { lib.trigger.trigger.forEach((entry,i,a) => { - if(e.message.match(entry.call) && entry.active == 1) { - lib.log('trigger: '+entry.name); - lib.getUserlevel(e.user.getNick(), e.network, e.channel.getName(), (cb) => { - if(cb.level >= entry.level) - entry.func(e, cb.level); - else - e.reply('no permission, min level '+entry.level+' required'); - }); + if(e.message.match(entry.call)) { + let active = false; + if(lib.trigger.chans[e.network+e.channel.getName()] !== undefined) { + if(lib.trigger.chans[e.network+e.channel.getName()][entry.name]) + active = true; + } + else + active = entry.active; + if(active) { + lib.log('trigger: '+entry.name); + lib.getUserlevel(e.user.getNick(), e.network, e.channel.getName(), (cb) => { + if(cb.level >= entry.level) + entry.func(e, cb.level); + else + e.reply('no permission, min level '+entry.level+' required'); + }); + } } }); }); diff --git a/src/lib.js b/src/lib.js index fe6e3bf..ec50436 100644 --- a/src/lib.js +++ b/src/lib.js @@ -13,6 +13,7 @@ self.admins = []; self.debug = false; self.trigger = { trigger: [], + chans: {}, add: (args) => { self.trigger.trigger.push({ name: args.name, @@ -45,6 +46,7 @@ function Lib() { self.loadUser((cb) => console.log((cb)?"Admins wurden geladen":"Admins konnten nicht geladen werden")); self.loadTrigger(); self.loadEvents(); + self.getChanTrigger(); }); } @@ -227,10 +229,10 @@ self.levelToModes = level => { return ""; }; -self.getcfg = (kat, cb) => { +self.getcfg = (kat, cb, key) => { // main, websrv, irc var out = {}; - self.sql.query("select * from `f0ck`.`cfg` where `class` = ?"+(arguments[2]?" && `key` = '"+arguments[2]+"'":""), kat, (err, rows) => { + self.sql.query("select * from `f0ck`.`cfg` where `class` = ?"+(key?" && `key` = '"+key+"'":""), kat, (err, rows) => { if(err || rows.length < 1) cb(err); else { @@ -252,7 +254,8 @@ self.getcfg = (kat, cb) => { } })(e.type, e.value); }); - if(cb) cb(out); + if(cb) + cb( key?out[key]:out ); } }); }; @@ -276,4 +279,20 @@ self.loadIRC = () => { console.log("Server "+e.name+" wurde geladen"); }); }); +}; + +self.getChanTrigger = () => { + self.trigger.chans = {}; + self.getcfg('trigger', cb => { + for(let tmp in cb) + self.trigger.chans[tmp] = cb[tmp]; + }); +}; + +self.genStdTrigger = () => { + var out = {}; + self.trigger.trigger.forEach((entry, key) => { + out[entry.name] = entry.active?true:false; + }); + return out; }; \ No newline at end of file diff --git a/src/trigger/trigger.js b/src/trigger/trigger.js index 9983f78..04bd87c 100644 --- a/src/trigger/trigger.js +++ b/src/trigger/trigger.js @@ -6,28 +6,57 @@ module.exports = (lib) => { active: 1, func: (e) => { var args = e.message.split(' '); - - switch(args[1]) { - case "cfg": - lib.getcfg('trigger_'+e.network+'_'+e.channel, cb => { - if(!cb) { - e.reply(cb); + lib.getcfg('trigger', cb => { + if(!cb) + cb = lib.genStdTrigger(); + switch(args[1]) { + case "std": + e.reply(JSON.stringify(lib.genStdTrigger())); + break; + case "toggle": + if(trigger = args[2].toLowerCase()) { + cb = triggertoggle(cb, trigger); + writecfg('trigger', e.network+e.channel, JSON.stringify(cb), cbwc => { + if(!cbwc) { + e.reply("trigger "+ trigger +" in channel "+e.channel.getName() + lib.bot.format.get(cb[trigger]?'green':'red')+" "+(cb[trigger]?"activated":"deactivated")); + lib.getChanTrigger(); + } + else + e.reply(cbwc); + }); } - else { - e.reply('muh'); - } - }); - break; - default: - var output = ""; - e.reply("Trigger in "+e.channel.getName()+" (green: activated, red: deactivated):"); - lib.trigger.trigger.forEach(e => { - output += lib.bot.format.get( (e.active)?'green':'red' )+" "+e.name; - }); - e.reply(output); - break; - } + break; + default: + var output = ""; + e.reply("Trigger in "+e.channel.getName()+" (green: activated, red: deactivated):"); + for(var key in cb) + output += lib.bot.format.get(cb[key]?'green':'red')+" "+key; + e.reply(output); + break; + } + }, e.network+e.channel); }, desc: 'muh' }); + + var triggertoggle = (trigger, key) => { + if(key in trigger) + trigger[key] = !trigger[key]; + return trigger; + }; + + var writecfg = (kat, key, value, cb) => { + lib.sql.query("select * from `f0ck`.`cfg` where `class` = ? && `key` = ? limit 1", [kat, key], (err, rows) => { + if(rows.length > 0) { + lib.sql.query("update `f0ck`.`cfg` set `value` = ? where `class` = ? && `key` = ?", [value, kat, key], (err) => { + if(cb) cb(err); + }); + } + else { + lib.sql.query("insert into `f0ck`.`cfg` (`class`,`key`,`value`,`type`) values (?,?,?,?)", [kat, key, value, 'json'], (err) => { + if(cb) cb(err); + }); + } + }); + }; }; \ No newline at end of file