Node.js 具有子分类文件夹的命令处理程序

Node.js 具有子分类文件夹的命令处理程序,node.js,discord.js,Node.js,Discord.js,这是我目前正在使用的命令处理程序,它按照预期的方式工作 试试看{ 让ops={ 活动:活动 } 让commandFile=require(`./commands/${cmd}.js`) 运行(客户端、消息、参数、操作); }捕获(e){ 控制台日志(e); } 但正如您所看到的,它只是读入commands文件夹并从那里提取.js文件。 我想做的是,为了我自己的“OCD”目的,对命令进行子分类,以便我能更好地跟踪它们。 这个命令处理程序有什么方法可以做到这一点吗 另外,我已经试过了,我个人不喜欢

这是我目前正在使用的命令处理程序,它按照预期的方式工作

试试看{
让ops={
活动:活动
}
让commandFile=require(`./commands/${cmd}.js`)
运行(客户端、消息、参数、操作);
}捕获(e){
控制台日志(e);
}
但正如您所看到的,它只是读入commands文件夹并从那里提取
.js
文件。
我想做的是,为了我自己的“OCD”目的,对命令进行子分类,以便我能更好地跟踪它们。
这个命令处理程序有什么方法可以做到这一点吗

另外,我已经试过了,我个人不喜欢它使用的命令结构。

我会使用这个包

假设您的文件结构如下所示:

命令:
第1页:
file1.js
第2页:
子文件夹:
file2.js
您可以使用
require all
来要求所有这些文件:

const required=require('require-all'))({
dirname://dirname+'/commands',//指向“commands”目录的路径
筛选器:/(.+)\.js$/,//与文件名匹配的RegExp
excludeDirs://^\(git | svn)|示例$/,//要排除的目录
recursive:true//允许递归(子文件夹)研究
});
上述
required
变量如下所示:

//*export*/表示从模块导出的对象
{
文件夹1:{file1:/*导出*/},
folder2:{
子文件夹:{file2:/*export*/}
}
}
为了获得所有命令,您需要使用递归函数扫描该对象:

const命令={};
(函数searchIn(obj={}){
用于(输入obj){
const potentialCommand=obj[key];
//如果是命令,请将其保存在commands对象中
如果(potentialCommand.run)命令[键]=potentialCommand;
//如果它是一个目录,也可以在其中递归搜索
else searchIn(潜在命令);
}
})(必需);
如果要执行该命令,只需调用:

commands['command-name'].运行(客户端、消息、参数、操作)

您可以在repl上找到一个正在运行的演示(带字符串)。

在这个编码中,我将把它放在
let ops={active:active}
的什么位置?对于我的队列系统,我需要它,您可以将它放在
命令['command-name']之前。运行(…)
,就像您以前做的一样。注意:不要问这个问题:我看到您有一些问题没有回答(如,和):您是否可以接受一个答案来关闭它们,或者发布并接受一个新的答案来解释您是如何解决它的?我将把
命令['command-name']放在哪里。运行(…)
?在每个命令内部或require all?好吧,请注意,我让它检测我的命令并使用我的权限系统,但是,当我运行命令时,它不会在通道中响应,也不会在控制台中抛出任何错误。有什么建议吗?我非常乐意发布我的
message.js
和我的
app.js