rewrite trigger system

This commit is contained in:
Flummi
2019-08-19 01:28:01 +00:00
parent 22d79eed18
commit 3a751f2e52
30 changed files with 536 additions and 570 deletions

View File

@@ -1,16 +1,21 @@
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`);
});
export default async bot => {
self.bot.on("ctcp:ping", e => {
e.write(`notice ${e.user.nick} :${e.message}`);
});
return [{
name: "version",
listener: "ctcp:version",
f: e => {
e.write(`notice ${e.user.nick} :\u0001VERSION ${versions[~~(Math.random() * versions.length)]}\u0001`);
}
}, {
name: "ping",
listner: "ctcp:ping",
f: e => {
e.write(`notice ${e.user.nick} :${e.message}`);
}
}];
};

View File

@@ -1,6 +0,0 @@
import ctcp from "./ctcp";
import message from "./message";
export default [
ctcp, message
];

View File

@@ -1,5 +1,5 @@
import logger from "../log";
import { read, cfg } from "../cfg";
import { cfg } from "../cfg";
import { getLevel } from "../../inc/admin";
@@ -12,40 +12,34 @@ const parseArgs = (msg) => {
};
};
export default self => {
self.bot.on("message", e => {
for (var [name, trigger] of self._trigger.entries()) {
//if (!e.self.me.nickname) {
// e.reply("nope, still initialising myself :^)");
// break;
//}
if (!trigger.call.exec(e.message))
continue;
if (!trigger.clients.includes(e.type))
continue;
export default async bot => {
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;
return [{
name: "message",
listener: "message",
f: e => {
const trigger = [...bot._trigger.entries()].filter(t =>
t[1].call.exec(e.message) &&
t[1].clients.includes(e.type) &&
t[1].active &&
!(t[1].level > getLevel(e.network, e.user)) &&
!((e.self.set !== "all" && e.self.set !== t[1].set) && t[1].set !== "all")
);
if ((e.self.set !== "all" && e.self.set !== trigger.set) && trigger.set !== "all")
continue;
trigger.forEach(async t => {
try {
e = { ...e, ...parseArgs(e.message) };
await t[1].f(e);
console.log(`triggered > ${t[0]}`);
}
catch(error) {
e.reply("An error occured.");
logger.error(`${e.network} -> ${e.channel} -> ${e.user.nick}: ${typeof error === "string" ? error : JSON.stringify(error)}`);
}
});
//if (trigger.level > e.user.level.level) {
if (trigger.level > getLevel(e.network, e.user)) {
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}`);
}
logger.info(`${e.network} -> ${e.channel} -> ${e.user.nick}: ${e.message}`);
});
};
}];
};