使用CSV数据创建嵌入式消息-NodeJS

时间:2020-11-03 21:34:35

标签: javascript node.js

因此,今天我有了脚本,可以将csv中的数据提取到数组中并进行归约+排序。 现在,我想使用这些数据嵌入不和谐的消息中。 但是,嵌入消息的代码无法获取数据,因为它位于超出其范围的const中。 我需要在哪里开始创建不和谐嵌入,或者如何将数据放入全局范围。

Example
Exception in thread "main" java.lang.RuntimeException: Main-class has no main method!
    at soot.Scene.setMainClass(Scene.java:171)
    at a1.TestSootCallGraph.main(TestSootCallGraph.java:47)

2 个答案:

答案 0 :(得分:1)

我发现了问题。读取流永远不会关闭。我通过添加来更改它:

.var readStream = fs.createReadStream('./FFA/csv/rankme.csv') 
(....)
.on('end', function () {
    readStream.destroy();
}) 

现在我得到console.log(已排序);在我的控制台中,以及未定义通道的错误。但我将能够解决该问题。谢谢您的帮助

答案 1 :(得分:0)

您需要将所有创建MessageEmbed的代码放在on关闭事件的回调中。像这样:

.on("close", () => {    
let sorted = data.sort((a,b) => b.score - a.score).slice(0,5); // sorts the objects based on their points and only keeps the 5 highest
console.log(sorted);

const embedTop = new Discord.MessageEmbed();
embedTop.setColor('#0099ff');
embedTop.setTitle('FFA Deathmatch TOP 5');
embedTop.setAuthor('BIG NUTS Bot','https://cdn.discordapp.com/app-icons/766003096517345300/f3a15990dd7f7ec50d8b9fea65047efc.png');
embedTop.setDescription('FFA Leaderboard');
embedTop.setThumbnail('https://cdn.discordapp.com/app-icons/766003096517345300/f3a15990dd7f7ec50d8b9fea65047efc.png');
embedTop.addField('1. Place: ', sorted[0].name, ' - Score : ', sorted[0].score, ' - Kills : ', sorted[0].kills);
embedTop.addField('2. Place: ', sorted[1].name, ' - Score : ', sorted[1].score, ' - Kills : ', sorted[1].kills);
embedTop.addField('3. Place: ', sorted[2].name, ' - Score : ', sorted[2].score, ' - Kills : ', sorted[2].kills);
embedTop.addField('4. Place: ', sorted[3].name, ' - Score : ', sorted[3].score, ' - Kills : ', sorted[3].kills);
embedTop.addField('5. Place: ', sorted[4].name, ' - Score : ', sorted[4].score, ' - Kills : ', sorted[4].kills);
embedTop.setFooter('Last update');
embedTop.setTimestamp();
    
message.channel.send(embedTop);
});