У меня есть обработчик команд для моего диска разногласия, который ищет в папке ./commands/
, в которой перечислены все команды .js
.Я хочу очистить все команды, и вместо того, чтобы все они были в одной папке, поместите их в свои папки категорий.Теперь проблема в том, что я понятия не имею, как заставить бота искать в подкаталогах папки ./commands/
, чтобы найти каждую команду в отдельной папке категории.Ниже у меня есть код, который я использую для поиска в ./commands/
.Любая идея заставить его искать в каждом каталоге в ./commands/
?
client.commands = new Discord.Collection();
client.aliases = new Discord.Collection();
fs.readdir("./commands/", (err, files) => {
if (err) return console.error(err);
console.log(`Loading a total of ${files.length} commands.`);
files.forEach(file => {
if (!file.endsWith(".js")) return;
let props = require(`./commands/${file}`);
console.log(`Loading Command: ${props.help.name} ✔`);
client.commands.set(props.help.name, props);
props.conf.aliases.forEach(alias => {
client.aliases.set(alias, props.help.name);
});
});
});
Редактировать:
Это ответ, который jakemingolla помог мне создать:
function walk(dir, callback) {
fs.readdir(dir, function(err, files) {
if (err) throw err;
files.forEach(function(file) {
console.log(`Loading a total of ${files.length} commands.`);
var filepath = path.join(dir, file);
fs.stat(filepath, function(err,stats) {
if (stats.isDirectory()) {
walk(filepath, callback);
} else if (stats.isFile() && file.endsWith('.js')) {
let props = require(`./${filepath}`);
console.log(`Loading Command: ${props.help.name} ✔`);
client.commands.set(props.help.name, props);
props.conf.aliases.forEach(alias => {
client.aliases.set(alias, props.help.name);
});
}
});
});
});
}
walk(`./commands/`)