51 lines
1.2 KiB
JavaScript
51 lines
1.2 KiB
JavaScript
import logger from "../log.mjs";
|
|
import { getLevel } from "../../inc/admin.mjs";
|
|
|
|
const parseArgs = msg => {
|
|
let args = msg.trim().split(" ")
|
|
, cmd = args.shift();
|
|
return {
|
|
cmd: cmd.replace(/^(\.|\/|\!)/, ""),
|
|
args: args
|
|
};
|
|
};
|
|
|
|
export default async bot => {
|
|
|
|
return [{
|
|
name: "message",
|
|
listener: "message",
|
|
f: e => {
|
|
logger.info(`${e.network} -> ${e.channel} -> ${e.user.nick}: ${e.message}`);
|
|
|
|
let trigger;
|
|
|
|
if(e.media) {
|
|
trigger = [...bot._trigger.entries()].filter(t => t[1].name === "parser");
|
|
if(!e.message)
|
|
e.message = "";
|
|
} else {
|
|
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.user).level
|
|
);
|
|
}
|
|
|
|
trigger.forEach(async t => {
|
|
try {
|
|
await t[1].f({ ...e, ...parseArgs(e.message) });
|
|
console.log(`triggered > ${t[0]}`);
|
|
}
|
|
catch(err) {
|
|
console.error(err);
|
|
await e.reply(`${t[0]}: An error occured.`);
|
|
logger.error(`${e.network} -> ${e.channel} -> ${e.user.nick}: ${err.toString ? err : JSON.stringify(err)}`);
|
|
}
|
|
});
|
|
}
|
|
}];
|
|
|
|
};
|