簡體   English   中英

我將如何使用.addField遍歷數組

[英]How would I loop through an array with .addField

我目前正在嘗試制作一個不和諧的機器人,該機器人將倒計時直到特定的日期。 現在,我將參數傳遞到.json文件的文件夾中,其中僅存儲事件名稱和發布日期/事件日期。

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`);
});

現在,它可以與sendChannel.send命令一起使用,並且可以發送文件夾中的許多文件,但一次只能發送一個。 我正在嘗試將它們全部嵌入消息中。 問題是.addField將僅將最后一個元素存儲在“輸入”中。 有沒有辦法讓我的程序在每次通過之后附加.addField而不是改寫?

addField存儲最后一個輸入,因為您在每個循環中都創建了一個新的Discord.RichEmbed()該循環創建了一個新實例並重寫了前一個實例。

您應該在循環之前初始化embed消息,然后在每個循環中添加如下字段:

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`);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM