【问题标题】:Creating an array from files in a folder and sending them randomly从文件夹中的文件创建数组并随机发送
【发布时间】:2019-02-14 17:19:30
【问题描述】:

我正在尝试为 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 启动机器人,但无济于事。没有警告打印到控制台。

【问题讨论】:

    标签: javascript arrays node.js discord.js


    【解决方案1】:

    我看到的一些问题:

    • 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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-09-29
      • 2020-10-26
      • 1970-01-01
      • 2014-07-29
      • 1970-01-01
      • 1970-01-01
      • 2017-09-13
      相关资源
      最近更新 更多