使用fs为discord.js制作一个灵活的文件路径读取器?

时间:2018-12-17 15:38:58

标签: javascript discord.js

The error from the terminal

我一直在为discord.js机器人制作命令,但现在我开始对其进行分类。目前,我的命令正在放入一个新的不和谐集合(名为c​​lient。{commandType} commands)的收集器中。我想在以下代码中将值“ i”更改为“ {commandType}”。有人知道该怎么做吗?

folder.forEach(i => {
  fs.readdir(`/home/runner/commands/${i}`, (err, file) => {
    if (err) console.log(err);

    let jsfile = file.filter(f => f.split(`.`).pop() === `js`);

    jsfile.forEach((f,e) => {
      let props = require(`/home/runner/commands/${i}/${f}`);

      client.commandPermissions.set(props.help.name, props.help.permissionLevel);

      console.log(`${props.help.name}: ${props.help.permissionLevel}`);

      client.{commandType}command.set(props.help.name, props);
             ^^^^^^^^^^^^^

    });

  });

});

那我该如何解决呢?

编辑:我很清楚,我实际上是在尝试这样做:client. + i + commands.set(props.help.name, props);

2 个答案:

答案 0 :(得分:0)

您应该可以使用:

client[i + 'command'].set(props.help.name, props);

与许多其他语言不同,JavaScript在对象和字典/哈希图之间没有区别。您可以使用符号(obj.propertyobj['property'])访问对象的属性。它们之间的主要区别是obj.property看起来更好,但是在obj['property']中,'property'可以是普通字符串,变量或其他表达式。

答案 1 :(得分:0)

“戴帽子的家伙”的回答是

    client[`${i}commands`].set(props.help.name, props);