From 4c55065168fe45e7fe64042756cba0dbdcf8f67d Mon Sep 17 00:00:00 2001 From: Flummi Date: Mon, 19 Aug 2019 19:17:51 +0000 Subject: [PATCH] moved cfg from db to json --- src/bot.mjs | 7 +-- src/inc/cfg.mjs | 68 ---------------------- src/inc/trigger/cfg.mjs | 97 ------------------------------- src/inc/trigger/lastfm.mjs | 4 +- src/inc/trigger/lib/cleverbot.mjs | 6 +- src/inc/trigger/soundcloud.mjs | 4 +- src/inc/trigger/wttr.mjs | 6 +- 7 files changed, 12 insertions(+), 180 deletions(-) delete mode 100644 src/inc/cfg.mjs delete mode 100644 src/inc/trigger/cfg.mjs diff --git a/src/bot.mjs b/src/bot.mjs index 533e18c..ac7fe33 100644 --- a/src/bot.mjs +++ b/src/bot.mjs @@ -1,15 +1,12 @@ -import logger from "./inc/log"; import _fs from "fs"; -import { read, cfg } from "./inc/cfg"; -import { default as config } from "../cfg/config.json"; import cuffeo from "cuffeo"; +import config from "../cfg/config.json"; +import logger from "./inc/log"; const fs = _fs.promises; const timeout = 1000; (async () => { - await read(); // read and parse config from database - const self = { _trigger: new Map(), trigger: function trigger(args) { diff --git a/src/inc/cfg.mjs b/src/inc/cfg.mjs deleted file mode 100644 index 452795f..0000000 --- a/src/inc/cfg.mjs +++ /dev/null @@ -1,68 +0,0 @@ -import sql from "./sql"; - -let cfg = { - client: {}, - main: {}, - websrv: {}, - trigger: {} -}; - -const read = () => new Promise((resolve, reject) => { - sql.any("select * from cfg").then(rows => { - for (let row in rows) { - cfg[rows[row].class][rows[row].key] = { - val: ((type, value) => { - switch (type) { - case "string": - return value; - case "int": - return parseInt(value); - case "bool": - return value === "true"; - case "json": - return JSON.parse(value); - } - })(rows[row].type, rows[row].value), - hidden: rows[row].hidden === 1, - type: rows[row].type - } - } - resolve(); - }) - .catch(err => { - reject("no cfg"); - }) -}); - -const write = (kat, key, value, type, cb) => { - if (type === "json") - value = JSON.stringify(value); - - sql.any("select * from cfg where class = $1 && key = $2 limit 1", [kat, key]).then(rows => { - if (rows.length > 0) { - sql.any("update cfg set value = $1 where class = $2 && key = $3", [value, kat, key]).then(rows => { - read().then(() => { - if(cb) cb(); - }); - }) - .catch(err => { - console.log("on update", err); - }); - } - else { - sql.any("insert into cfg (class, key, value, type) values ($1, $2, $3, $4)", [kat, key, value, type]).then(rows => { - read().then(() => { - if (cb) cb(); - }); - }) - .catch(err => { - console.log("on insert", err); - }); - } - }) - .then(err => { - console.log("on select", err); - }); -}; - -export { cfg, read, write }; \ No newline at end of file diff --git a/src/inc/trigger/cfg.mjs b/src/inc/trigger/cfg.mjs deleted file mode 100644 index f6133b7..0000000 --- a/src/inc/trigger/cfg.mjs +++ /dev/null @@ -1,97 +0,0 @@ -import { read, write, cfg } from "../cfg"; - -const _modes = ["get", "set", "rm", "add", "opts"]; -const _opts = { - showTypes: { type: "boolean", stdval: false }, - showHidden: { type: "boolean", stdval: false } -}; -const _debug = false; - -export default async bot => { - - return [{ - name: "cfg", - call: /^\!cfg/i, - active: false, - level: 100, - clients: ["irc"], - f: e => { - let args = e.message.substring(5); - let opts = {}; - let value = null; - - if (args.includes("{") && args.includes(":") && args.charAt(args.length - 1) === "}") { // check if options available - try { - opts = JSON.parse(args.replace(/.*\{(.*?)\}.*/, "{$1}")); // parse options - } - catch(err) { - return e.reply(err.message); // throw errormessage - } - args = args.replace(/(.*?)\{.*\}(.*?)/, "$1$2"); // remove options from arguments - } - for (let _opt in _opts) // check options - if (!opts.hasOwnProperty(_opt)) - opts[_opt] = _opts[_opt].stdval; - else - if (typeof opts[_opt] !== _opts[_opt].type) - opts[_opt] = _opts[_opt].stdval; - - if(_debug) - e.reply(`opts: ${JSON.stringify(opts)}`); - - args = args.trim().split(" "); - let mode = args.shift(); - - if (mode === "set" && e.message.includes("=")) { // get value if mode = set - args = args.join(" "); // omg - value = args.replace(/.*=(.*?)/, "$1").trim(); - args = args.replace(/(.*?)=.*/, "$1").trim().split(" "); - - e.reply(`value: ${value}, rest: ${args}`); - } - - if (mode === "opts") // maybe replaced by switch in the future - return e.reply(`options: ${Object.keys(_opts).map(el => `[b]${el}[/b]: [i]${_opts[el].stdval} (${_opts[el].type})[/i]`).join(", ")}`) - - if (!_modes.includes(mode)) // if unknown mode - return e.reply(`wrong mode! (${_modes.join(", ")})`); - if (args.length === 0) // no mode given, get classes - return e.reply(`classes: ${Object.keys(cfg).join(", ")}`); - - let cfgstr = args[0].split("."); - - if (cfgstr.length === 1) { // get keys in class - if (!Object.keys(cfg).includes(cfgstr[0])) - return e.reply(`class [b]${cfgstr[0]}[/b] not found`); - let keys = { // split between hidden and public keys - hidden: Object.keys(cfg[cfgstr[0]]).filter(el => cfg[cfgstr[0]][el].hidden), - public: Object.keys(cfg[cfgstr[0]]).filter(el => !cfg[cfgstr[0]][el].hidden) - }; - return e.reply(`keys in class [b]${cfgstr[0]}[/b]: ${keys.public.length > 0 ? keys.public.map(el => `${el}${opts.showTypes ? ` [i](${cfg[cfgstr[0]][el].type})[/i]` : ""}`).join(", ") : "none"} (${keys.hidden.length} hidden)`); - } - - if(mode === "get") { - if (!opts.showHidden) - if (cfg[cfgstr[0]][cfgstr[1]].hidden || opts.showHidden) // catch hidden key - return e.reply(`key [b]${cfgstr[1]}[/b] in class [b]${cfgstr[0]}[/b] is hidden, kek`); - } - - switch (mode) { - case "get": - e.reply(cfg[cfgstr[0]][cfgstr[1]].val); - break; - case "set": - if (cfg[cfgstr[0]][cfgstr[1]].type === "json") - return e.reply("JSON isn't supported yet"); - if(value === null) - return e.reply("Error"); - - write(cfgstr[0], cfgstr[1], value, cfg[cfgstr[0]][cfgstr[1]].type, () => { - e.reply(cfg[cfgstr[0]][cfgstr[1]].val); - }) - break; - } - - } - }]; -}; diff --git a/src/inc/trigger/lastfm.mjs b/src/inc/trigger/lastfm.mjs index fc631bc..e942702 100644 --- a/src/inc/trigger/lastfm.mjs +++ b/src/inc/trigger/lastfm.mjs @@ -1,7 +1,7 @@ -import { cfg } from "../../inc/cfg"; import fetch from "flumm-fetch-cookies"; +import config from "../../../cfg/config.json"; -const api = `http://ws.audioscrobbler.com/2.0/?method=user.getRecentTracks&limit=1&api_key=${cfg.main.lastfm.val.key}&format=json&user=`; +const api = `http://ws.audioscrobbler.com/2.0/?method=user.getRecentTracks&limit=1&api_key=${config.apis.lastfm.key}&format=json&user=`; export default async bot => { diff --git a/src/inc/trigger/lib/cleverbot.mjs b/src/inc/trigger/lib/cleverbot.mjs index 30aa23d..2afdb28 100644 --- a/src/inc/trigger/lib/cleverbot.mjs +++ b/src/inc/trigger/lib/cleverbot.mjs @@ -1,5 +1,5 @@ import fetch from "flumm-fetch-cookies"; -import { cfg } from "../../../inc/cfg"; +import config from "../../../../cfg/config.json"; export default new class cleverbot { constructor() { @@ -12,7 +12,7 @@ export default new class cleverbot { const options = { method: "POST", body: { - ...cfg.main.chatbot.val, + ...config.apis.cleverbot, ...{ nick: "uwibot" } } }; @@ -27,7 +27,7 @@ export default new class cleverbot { const options = { method: "POST", body: { - ...cfg.main.chatbot.val, + ...config.apis.cleverbot, ...{ nick: this.nick, text: msg diff --git a/src/inc/trigger/soundcloud.mjs b/src/inc/trigger/soundcloud.mjs index a9e8ffa..bc22437 100644 --- a/src/inc/trigger/soundcloud.mjs +++ b/src/inc/trigger/soundcloud.mjs @@ -1,5 +1,5 @@ import fetch from "flumm-fetch-cookies"; -import { cfg } from "../../inc/cfg"; +import config from "../../../cfg/config.json"; export default async bot => { @@ -12,7 +12,7 @@ export default async bot => { usage: "[b].scrnd[/b]" }, f: async e => { - const res = await (await fetch(`http://api.soundcloud.com/users/${cfg.main.soundcloud.val.user}/favorites?client_id=${cfg.main.soundcloud.val.clientid}`)).json(); + const res = await (await fetch(`http://api.soundcloud.com/users/${config.apis.soundcloud.user}/favorites?client_id=${config.apis.soundcloud.clientid}`)).json(); const track = res[~~((Math.random() * res.length) + 1)]; e.reply(`${track.permalink_url}\n[b]${track.title}[/b] - length [b]${track.duration}[/b] - [b]${track.user.username}[/b] on [b]${track.created_at}[/b]`); } diff --git a/src/inc/trigger/wttr.mjs b/src/inc/trigger/wttr.mjs index ade68ac..4b903f7 100644 --- a/src/inc/trigger/wttr.mjs +++ b/src/inc/trigger/wttr.mjs @@ -1,5 +1,5 @@ import fetch from "flumm-fetch-cookies"; -import { cfg } from "../../inc/cfg"; +import config from "../../../cfg/config.json"; import { conds } from "./lib/wttr"; export default async bot => { @@ -74,7 +74,7 @@ export default async bot => { }, f: e => { const loc = encodeURIComponent(e.message.trim().substring(3)); - const key = cfg.main.owm.val.key; + const key = config.apis.owm.key; const api = `http://api.openweathermap.org/data/2.5/weather?q=${loc}&appid=${key}&units=metric&lang=de`; fetch(api) @@ -121,7 +121,7 @@ export default async bot => { }, f: e => { const loc = encodeURIComponent(e.message.trim().substring(9)); - const key = cfg.main.owm.val.key; + const key = config.apis.owm.key; const api = `http://api.openweathermap.org/data/2.5/weather?q=${loc}&appid=${key}&units=metric&lang=de`; fetch(api)