-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
41 lines (32 loc) · 1.77 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
const fs = require("fs");
const path = require("path");
const additionsPath = path.join(__dirname, ".", "additions");
let erisifyOptions = { enabled: "all", disabled: "none", logging: false, preventErrors: false };
/**
* @param {import("eris")} Eris
* @param {Object} options
* @param {Array} [options.enabled="all"] An array of enabled additions, enabling prioritizes over disabling (ex. ["Message.guild"])
* @param {Array} [options.disabled="none"] An array of disabled additions (ex. ["Message.guild"])
* @param {Boolean} [options.logging=false] Enable logging of adding additions
* @param {Boolean} [options.preventErrors=false] Try and fix errors such as making strings shorter instead of throwing an error if the string is too long
*/
module.exports = async (Eris, options = erisifyOptions) => {
if (options !== erisifyOptions) erisifyOptions = options;
const additionsFolders = fs.readdirSync(additionsPath);
for (const additionFolder of additionsFolders) {
const filePath = path.join(additionsPath, additionFolder);
const additions = fs.readdirSync(filePath).filter(file => file.endsWith(".js"));
for (const addition of additions) {
let additionName = `${additionFolder}.${addition}`;
additionName = additionName.substring(0, additionName.length - ".js".length);
if (!options.enabled?.includes(additionName) && options.disabled?.includes(additionName)) {
if (options.logging) console.log(`${additionName} has been disabled`);
continue;
}
const plugin = require(`${filePath}/${addition}`);
plugin.init(Eris);
if (options.logging) console.log(`${additionName} has been initialized`);
}
}
};
module.exports.options = erisifyOptions;