-1
module.exports.config = {
    name: "av",
    aliases: ["icon", "pfp"]
};

索引主文件:

bot.commands = new Discord.Collection();
bot.aliases = new Discord.Collection();
fs.readdir("./commands/general", (err, files) => {

    if (err) console.log(err);

    let jsfile = files.filter(f => f.split(".").pop() === "js");
    if (jsfile.length <= 0) {
        console.log("Couldn't find the general commands.");
        return;
    }
    jsfile.forEach((f, i) => {
        let props = require(`./commands/general/${f}`);
        console.log(`${f} loaded!`);
        bot.commands.set(props.config.name, props);
        bot.aliases.set(props.config.name);
    });
});

留言

const command = bot.commands.get(commandName) || bot.commands.find(cmd => cmd.aliases && cmd.aliases.includes(commandName));

注意:所有命令都运行良好,但尝试使用不同方式多次修复别名。

4

1 回答 1

0

您有两个集合,您也没有为 bot.aliases 设置任何值,并且键仍然是 props.config.name,您可以坚持使用两个集合,但没有实际用途,只会让代码变得更糟

所以摆脱别名集合和bot.aliases.set(props.config.name)

接下来,实际的函数属性是什么?如果你现在有它,它在配置对象上是没有用的。

所以假设你的布局是现在

module.exports.run = () => { /* function, doesnt have to be run */ }
module.exports.config = {
};

主文件中的代码

jsfile.forEach(f => {
    let props = require(`./commands/general/${f}`);
    console.log(`${f} loaded!`);
    bot.commands.set(props.config.name, { 
        run: props.run,
        ...props.config
    });
});

支票上的代码

const command = bot.commands.get(commandName) || bot.commands.find(cmd => cmd.aliases && cmd.aliases.includes(commandName));

//to actually run it you would need to do
command.run();
于 2020-04-26T07:44:26.070 回答