#javascript #bots #discord #discord.js
#javascript #боты #Discord #discord.js
Вопрос:
В настоящее время я пытаюсь создать discord-бота, который будет вести обратный отсчет до определенной даты. Прямо сейчас у меня есть аргументы, переданные в папку с файлами .json, где хранятся только название события и дата выпуска / eventdate.
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 будет хранить только последний элемент в «input». Есть ли способ, чтобы моя программа добавляла .addField после каждого прохода, а не перезаписывала?
Ответ №1:
addField
Сохраняет последний ввод, потому что вы создаете новый Discord.RichEmbed()
в каждом цикле, который создает новый экземпляр и перезаписывает предыдущий.
Вы должны инициализировать сообщение о внедрении перед циклом, а затем добавлять поля в каждом цикле следующим образом :
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`);
});
Комментарии:
1. Большое вам спасибо, я не понимал, что синтаксис был embed.addField для объединения файлов. Затем вывод команды отправки и встраивания переменной из цикла сработал отлично!