mirror of
https://github.com/arthur-pbty/xiao.git
synced 2026-06-10 19:04:42 +02:00
Framework Rewrite
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
const Collection = require('@discordjs/collection');
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const Group = require('./Group');
|
||||
|
||||
module.exports = class Registry {
|
||||
constructor(client) {
|
||||
Object.defineProperty(this, 'client', { value: client });
|
||||
|
||||
this.commands = new Collection();
|
||||
this.groups = new Collection();
|
||||
this.types = new Collection();
|
||||
}
|
||||
|
||||
findCommands(query) {
|
||||
query = query.toLowerCase();
|
||||
return this.commands.filter(command => command.name === query || command.aliases.includes(query));
|
||||
}
|
||||
|
||||
registerCommand(command) {
|
||||
this.commands.set(command.name, command);
|
||||
return this;
|
||||
}
|
||||
|
||||
registerCommandsIn(dir) {
|
||||
const groups = fs.readdirSync(dir);
|
||||
for (const group of groups) {
|
||||
const commands = fs.readdirSync(path.join(dir, group));
|
||||
for (const command of commands) {
|
||||
if (!command.endsWith('.js')) continue;
|
||||
const required = require(path.join(dir, group, command));
|
||||
this.registerCommand(new required(this.client));
|
||||
}
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
findGroups(query) {
|
||||
query = query.toLowerCase();
|
||||
return this.groups.filter(group => group.id === query || group.name.toLowerCase() === query);
|
||||
}
|
||||
|
||||
registerGroup(group) {
|
||||
this.groups.set(group.id, group);
|
||||
return this;
|
||||
}
|
||||
|
||||
registerGroups(groups) {
|
||||
for (const [id, name] of groups) {
|
||||
const group = new Group(this.client, id, name);
|
||||
this.registerGroup(group);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
registerType(type) {
|
||||
this.types.set(type.id, type);
|
||||
return this;
|
||||
}
|
||||
|
||||
registerTypesIn(dir) {
|
||||
const types = fs.readdirSync(dir);
|
||||
for (const type of types) {
|
||||
if (!type.endsWith('.js')) continue;
|
||||
const required = require(path.join(dir, type));
|
||||
this.registerType(new required(this.client));
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
registerDefaultTypes() {
|
||||
return this.registerTypesIn(path.join(__dirname, 'types'));
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user