根据文件夹中的文件创建数组并随机发送(Discord.js)

时间:2018-09-10 09:40:08

标签: javascript arrays node.js discord.js

我正在尝试为Discord.js机器人创建一个命令,该命令在被触发时将使用从文件夹创建的数组,选择一个随机图像,然后发送它。

我无法手动设置数组,因为文件夹中的图像数量总是在变化。

这就是我所拥有的:

if(command.toLowerCase() == "command"){

    const fs = require('fs');
    const imageFolderLocation = "./images/";
    var imageArray = [];

    fs.readdir(imageFolderLocation, (err, files) => {
      imageArray = files;
    });

    let randomImage = Math.floor(Math.random() * imageArray.length) + 1;

      for (var i = 0; i < imageArray.length; i++) {
        message.channel.sendFile(randomImage);
      }
    return;
  }

我尝试使用--trace-warnings启动该机器人,但无济于事。没有警告打印到控制台。

感谢高级TriggerWarning。

1 个答案:

答案 0 :(得分:0)

我看到一些问题:

  • fs.readdir是异步的,您不能在回调之外使用files / imageArray
  • 您发送随机整数而不是图片
  • 您发送randomImage imageArray.length次
  • 您忽略了错误

更正的代码:

if (command.toLowerCase() == "command") {

    const fs = require('fs');
    const imageFolderLocation = "./images/";

    fs.readdir(imageFolderLocation, (err, imageArray) => {

        // TODO if (err) { /* print to console or something */ }

        let randomIndex = Math.floor(Math.random() * imageArray.length) + 1;
        let randomImage = imageArray[randomIndex];

        message.channel.sendFile(randomImage);
    });

    return;
}