Javascript 如何使用.addField循环遍历数组
我目前正在尝试制作一个discord机器人,它将倒计时到特定日期。现在,我将参数传递到一个.json文件文件夹中,其中只存储了事件名称和发布日期/eventdateJavascript 如何使用.addField循环遍历数组,javascript,bots,discord,discord.js,Javascript,Bots,Discord,Discord.js,我目前正在尝试制作一个discord机器人,它将倒计时到特定日期。现在,我将参数传递到一个.json文件文件夹中,其中只存储了事件名称和发布日期/eventdate bot.on('ready', () => { var sendChannel = bot.channels.find(channel => channel.id === '553846848578912257') setInterval(() =>{ fs.readdir(folder, (err, f
bot.on('ready', () => {
var sendChannel = bot.channels.find(channel => channel.id === '553846848578912257')
setInterval(() =>{
fs.readdir(folder, (err, files) => {
files.forEach(file => {
});
for(i = 0; i < files.length; i++){
var input = require(folder+files[i]);
if(((new Date(input.releasedate) - currentdate) / days) > 0)
{
var embed = new Discord.RichEmbed()
.addField(input.eventName, Math.ceil((new Date(input.releasedate) - currentdate) / days) + ' days until ')
//sendChannel.send(Math.ceil((new Date(input.releasedate) - currentdate) / days) + ' days until ' + input.eventName);
}
else
{
console.log("arg not passed, invalid or past: "+input.eventName)
}
}
sendChannel.send(embed);
});
}, 10000);
console.log("Ready")
console.log(`Logged in as ${bot.user.tag} (${bot.user.id}) on ${bot.guilds.size} servers`);
bot.user.setActivity(`Counting things down | ${bot.guilds.size} servers`);
});
bot.on('ready',()=>{
var sendChannel=bot.channels.find(channel=>channel.id=='553846848578912257')
设置间隔(()=>{
fs.readdir(文件夹,(错误,文件)=>{
files.forEach(文件=>{
});
对于(i=0;i0)
{
var embed=newdiscord.RichEmbed()
.addField(input.eventName,Math.ceil)((新日期(input.releasedate)-currentdate)/days)+“截止日期”)
//sendChannel.send(Math.ceil((新日期(input.releasedate)-currentdate)/days)+到'+input.eventName'的天数);
}
其他的
{
console.log(“参数未通过、无效或已通过:+input.eventName”)
}
}
sendChannel.send(嵌入);
});
}, 10000);
控制台日志(“就绪”)
console.log(`以${bot.user.tag}(${bot.user.id})身份登录${bot.guilds.size}服务器`);
bot.user.setActivity(`Counting things down |${bot.guilds.size}服务器`);
});
现在,它将与sendChannel.send命令一起工作,它将发送文件夹中的文件,但每次只发送一个。我正试图将它们全部嵌入到一条嵌入的消息中。问题是.addField将只存储“input”中的最后一个元素。有没有办法让我的程序在每次传递后附加.addField而不是重写?由于在创建新实例并重写前一个实例的每个循环中都创建了一个新的
Discord.RichEmbed()
,所以addField
存储最后的输入
您应该在循环之前初始化嵌入消息,然后在每个循环中添加字段,如下所示:
bot.on('ready', () => {
var sendChannel = bot.channels.find(channel => channel.id === '553846848578912257')
setInterval(() =>{
fs.readdir(folder, (err, files) => {
// initialize the embed message here
var embed = new Discord.RichEmbed();
files.forEach(file => {
});
for(i = 0; i < files.length; i++){
var input = require(folder+files[i]);
if(((new Date(input.releasedate) - currentdate) / days) > 0)
{
embed.addField(input.eventName, Math.ceil((new Date(input.releasedate) - currentdate) / days) + ' days until ');
}
else
{
console.log("arg not passed, invalid or past: "+input.eventName)
}
}
sendChannel.send(embed);
});
}, 10000);
console.log("Ready")
console.log(`Logged in as ${bot.user.tag} (${bot.user.id}) on ${bot.guilds.size} servers`);
bot.user.setActivity(`Counting things down | ${bot.guilds.size} servers`);
});
bot.on('ready',()=>{
var sendChannel=bot.channels.find(channel=>channel.id=='553846848578912257')
设置间隔(()=>{
fs.readdir(文件夹,(错误,文件)=>{
//在此处初始化嵌入消息
var embed=newdiscord.RichEmbed();
files.forEach(文件=>{
});
对于(i=0;i0)
{
embed.addField(input.eventName,Math.ceil)((新日期(input.releasedate)-currentdate)/days)+“截止日期”);
}
其他的
{
console.log(“参数未通过、无效或已通过:+input.eventName”)
}
}
sendChannel.send(嵌入);
});
}, 10000);
控制台日志(“就绪”)
console.log(`以${bot.user.tag}(${bot.user.id})身份登录${bot.guilds.size}服务器`);
bot.user.setActivity(`Counting things down |${bot.guilds.size}服务器`);
});
非常感谢,我没有意识到连接文件的语法是embed.addField。然后,将send命令和embed变量从循环中取出,效果非常好!