2020-01-13 22:38:12 +00:00
|
|
|
import { promisify } from 'util';
|
|
|
|
import { readdir, lstat } from 'fs';
|
|
|
|
import { Collection } from 'discord.js';
|
|
|
|
import { Plugin } from './Plugin';
|
|
|
|
import { Command } from './Command';
|
|
|
|
|
|
|
|
export async function PluginLoader() {
|
|
|
|
const readDir = promisify(readdir);
|
|
|
|
const stats = promisify(lstat);
|
|
|
|
|
|
|
|
const plugins = new Collection<string, Plugin>();
|
|
|
|
|
|
|
|
const pluginDir = './build/src/plugins';
|
|
|
|
const folders = await readDir(pluginDir);
|
|
|
|
for await (const folder of folders) {
|
|
|
|
const folderDir = `${pluginDir}/${folder}`;
|
|
|
|
const info = await stats(folderDir);
|
|
|
|
if (info.isDirectory()) {
|
|
|
|
const plugin = new Plugin();
|
|
|
|
|
|
|
|
const files = await readDir(`${folderDir}`);
|
|
|
|
for await (const file of files) {
|
|
|
|
if (file.endsWith('.js')) {
|
2020-01-25 17:02:34 +00:00
|
|
|
const command = require(`./${folder}/${file}`).command;
|
|
|
|
if (command instanceof Command) {
|
|
|
|
plugin.set(command.name, command);
|
|
|
|
}
|
2020-01-13 22:38:12 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
plugins.set(folder, plugin);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return plugins;
|
|
|
|
}
|