rewrite trigger system
This commit is contained in:
@@ -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}`);
|
||||
}
|
||||
}];
|
||||
};
|
||||
|
@@ -1,6 +0,0 @@
|
||||
import ctcp from "./ctcp";
|
||||
import message from "./message";
|
||||
|
||||
export default [
|
||||
ctcp, message
|
||||
];
|
@@ -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}`);
|
||||
});
|
||||
};
|
||||
}];
|
||||
|
||||
};
|
||||
|
Reference in New Issue
Block a user