从文件夹中的文件创建数组并随机发送
Posted
技术标签:
【中文标题】从文件夹中的文件创建数组并随机发送【英文标题】: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
启动机器人,但无济于事。没有警告打印到控制台。
【问题讨论】:
【参考方案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;
【讨论】:
以上是关于从文件夹中的文件创建数组并随机发送的主要内容,如果未能解决你的问题,请参考以下文章