From 118e805fd86377bbbba790f81f988dab1e219e6f Mon Sep 17 00:00:00 2001 From: Flummi Date: Thu, 1 Mar 2018 06:45:26 +0100 Subject: [PATCH] outsourced events --- src/bot.mjs | 58 +++---------------------- src/inc/events/ctcp.mjs | 12 +++++ src/inc/events/index.mjs | 6 +++ src/inc/events/message.mjs | 44 +++++++++++++++++++ src/inc/trigger/{main.mjs => index.mjs} | 0 5 files changed, 69 insertions(+), 51 deletions(-) create mode 100644 src/inc/events/ctcp.mjs create mode 100644 src/inc/events/index.mjs create mode 100644 src/inc/events/message.mjs rename src/inc/trigger/{main.mjs => index.mjs} (100%) diff --git a/src/bot.mjs b/src/bot.mjs index a3474c8..378f27f 100644 --- a/src/bot.mjs +++ b/src/bot.mjs @@ -2,56 +2,21 @@ import { logger } from "./inc/log"; import { read, cfg } from "./inc/cfg"; import { wrapper } from "./inc/wrapper"; -import triggers from "./inc/trigger/main"; +import triggers from "./inc/trigger"; +import events from "./inc/events"; read().then(() => { let bot = new wrapper(); const self = { _trigger: new Map(), - trigger: trigger + trigger: trigger, + bot: bot }; triggers.forEach(mod => mod(self)); - - bot.on("message", e => { - for (var [name, trigger] of self._trigger.entries()) { - if (!trigger.call.exec(e.message)) - continue; - if (!trigger.clients.includes(e.type)) - continue; - - let active = false; - if (e.type === "irc" && cfg.trigger[e.network + e.channel]) { - if (cfg.trigger[e.network + e.channel][trigger.name]) - active = true; - } - else - active = trigger.active; - if (!active) - continue; - - if ((e.self.set !== "all" && e.self.set !== trigger.set) && trigger.set !== "all") - continue; - - if (trigger.level > e.user.level.level) { - e.reply(`no permission, min level ${trigger.level} required`); - break; - } - - e = Object.assign(e, parseArgs(e.message)); - trigger.f(e); - } - logger.info(`${e.network} -> ${e.channel} -> ${e.user.nick}: ${e.message}`); - }); - - bot.on("ctcp:version", e => { - const versions = [ - "AmIRC.1 (8 Bit) for Commodore Amiga 500", - "HexChat 0.72 [x86] / Windows 95c [500MHz]" - ]; - e.write(`notice ${e.user.nick} :\u0001VERSION ${versions[~~(Math.random() * versions.length)]}\u0001`); - }); + events.forEach(event => event(self)); + }) .catch(err => { logger.error(`(main) ${err.message}`); @@ -65,13 +30,4 @@ function trigger(args) { this.set = args.set || "all"; // uwe, nxy, f0ck, all this.clients = args.clients || ["irc", "tg", "discord"]; this.f = args.f; -} - -const parseArgs = (msg) => { - let args = msg.trim().split(" "); - let cmd = args.shift(); - return { - cmd: cmd.replace(/^(\.|\/|\!)/, ""), - args: args - }; -}; \ No newline at end of file +} \ No newline at end of file diff --git a/src/inc/events/ctcp.mjs b/src/inc/events/ctcp.mjs new file mode 100644 index 0000000..e3d5c0c --- /dev/null +++ b/src/inc/events/ctcp.mjs @@ -0,0 +1,12 @@ +import { logger } from "../log"; + +const versions = [ + "AmIRC.1 (8 Bit) for Commodore Amiga 500", + "HexChat 0.72 [x86] / Windows 95c [500MHz]" +]; + +export default self => { + self.bot.on("ctcp:version", e => { + e.write(`notice ${e.user.nick} :\u0001VERSION ${versions[~~(Math.random() * versions.length)]}\u0001`); + }); +}; \ No newline at end of file diff --git a/src/inc/events/index.mjs b/src/inc/events/index.mjs new file mode 100644 index 0000000..b41801e --- /dev/null +++ b/src/inc/events/index.mjs @@ -0,0 +1,6 @@ +import ctcp from "./ctcp"; +import message from "./message"; + +export default [ + ctcp, message +]; \ No newline at end of file diff --git a/src/inc/events/message.mjs b/src/inc/events/message.mjs new file mode 100644 index 0000000..a445225 --- /dev/null +++ b/src/inc/events/message.mjs @@ -0,0 +1,44 @@ +import { logger } from "../log"; +import { read, cfg } from "../cfg"; + +const parseArgs = (msg) => { + let args = msg.trim().split(" "); + let cmd = args.shift(); + return { + cmd: cmd.replace(/^(\.|\/|\!)/, ""), + args: args + }; +}; + +export default self => { + self.bot.on("message", e => { + for (var [name, trigger] of self._trigger.entries()) { + if (!trigger.call.exec(e.message)) + continue; + if (!trigger.clients.includes(e.type)) + continue; + + let active = false; + if (e.type === "irc" && cfg.trigger[e.network + e.channel]) { + if (cfg.trigger[e.network + e.channel][trigger.name]) + active = true; + } + else + active = trigger.active; + if (!active) + continue; + + if ((e.self.set !== "all" && e.self.set !== trigger.set) && trigger.set !== "all") + continue; + + if (trigger.level > e.user.level.level) { + e.reply(`no permission, min level ${trigger.level} required`); + break; + } + + e = Object.assign(e, parseArgs(e.message)); + trigger.f(e); + } + logger.info(`${e.network} -> ${e.channel} -> ${e.user.nick}: ${e.message}`); + }); +}; \ No newline at end of file diff --git a/src/inc/trigger/main.mjs b/src/inc/trigger/index.mjs similarity index 100% rename from src/inc/trigger/main.mjs rename to src/inc/trigger/index.mjs