Discord.JS 命令处理程序子文件夹

Posted

技术标签:

【中文标题】Discord.JS 命令处理程序子文件夹【英文标题】:Discord.JS Command Handler Sub-Folders 【发布时间】:2021-12-13 05:10:36 【问题描述】:

我目前有一个 Discord.JS 命令处理程序,可以加载命令文件夹中的所有命令。但是,由于所有命令,它现在变得有点混乱,因此我一直在尝试实现子文件夹。这将清理命令文件夹中的文件,将它们组织到文件夹组中。

我目前有此代码用于在同一文件夹中加载命令。

但我不知道如何进入命令目录中的每个文件夹并加载命令。 如果有人可以帮助我,将不胜感激。


const allCommands = fs.readdirSync('./commands');
for (const command of allCommands) 
    try 
        const loadedCommand = require(`./commands/$command`);
        commands.set(loadedCommand.name, loadedCommand);
        
        for(const alias of loadedCommand.aliases || []) 
            commands.set(alias,  ...loadedCommand, alias: true );
        
        logger.info(`Loaded command $loadedCommand.name ($command)`);
     catch (error) 
        logger.error(`Failed to load command $command. **Please report the following error:**`);
        logger.error(error);
    

【问题讨论】:

【参考方案1】:

以路径为参数将所有内容移动到自己的函数中。 每次找到文件夹时,调用带有文件夹路径的函数。

(function readdir(path='./commands') 
    const allCommands = fs.readdirSync(path);
    for (const command of allCommands) 
        if(fs.statSync(`$path/$command`).isDirectory()) 
            readdir(`$path/$command`);
            continue;
        

        try 
            const loadedCommand = require(`$path/$command`);
            commands.set(loadedCommand.name, loadedCommand);
            
            for(const alias of loadedCommand.aliases || []) 
                commands.set(alias,  ...loadedCommand, alias: true );
            
            logger.info(`Loaded command $loadedCommand.name ($path/$command)`);
         catch (error) 
            logger.error(`Failed to load command $path/$command. **Please report the following error:**`);
            logger.error(error);
        
    
)();

【讨论】:

【参考方案2】:

老实说,我不建议以这种方式导入。如果您将每个命令导入一个单独的 javascript 文件然后从那里导出每个命令,您可能会有更好的运气,它应该使您的控制器级代码更易于阅读

【讨论】:

蟒蛇?问题被标记为 javascript 和 discord.js 我不知道我怎么认为这是 python 但我的答案仍然适用于 JavaScript

以上是关于Discord.JS 命令处理程序子文件夹的主要内容,如果未能解决你的问题,请参考以下文章

Discord.js - 如何实现前缀以避免错误触发命令响应?

Discord.JS Purge.js 命令问题

discord.js 命令处理程序错误

杀死 discord.js 中的命令处理程序脚本

Discord.js 命令处理程序机器人不响应

斜杠命令处理程序中的 Discord.js v13 TypeError