diff --git a/commands/100-games/chartgamegenres.js b/commands/100-games/chartgamegenres.js index db36085..33f1840 100644 --- a/commands/100-games/chartgamegenres.js +++ b/commands/100-games/chartgamegenres.js @@ -52,32 +52,35 @@ module.exports = { return interaction.editReply({ embeds: [embed] }); } - const beatGameIGDBEntries = []; + const gameIds = []; for (let i = 0; i < beatenGamesDatabaseEntries.length; i++) { - const game = await checkGameStorageId(beatenGamesDatabaseEntries[i].gameId); - const json = await getGameJson(String.prototype.concat('where id = ', game.igdb_id, '; fields *;')); - beatGameIGDBEntries.push(json[0]); + const game = await checkGameStorageId(beatenGamesDatabaseEntries[i].gameId); + gameIds.push(game.igdb_id); } - const genres = []; + const beatGameIGDBEntries = await getGameJson(String.prototype.concat(`where id = (${gameIds}); fields *; limit ${gameIds.length};`)); + const counts = []; - const cachedGenres = new Map(); + const cachedGenres = new Set(); for (let i = 0; i < beatGameIGDBEntries.length; i++) { if (beatGameIGDBEntries[i].genres) { for (let j = 0; j < beatGameIGDBEntries[i].genres.length; j++) { + cachedGenres.add(beatGameIGDBEntries[i].genres[j]); + } + } + } - if (cachedGenres.has(beatGameIGDBEntries[i].genres[j])) - { - genres.push(cachedGenres.get(beatGameIGDBEntries[i].genres[j])); - } - else - { - const genre = await getGenres(beatGameIGDBEntries[i].genres[j]); - cachedGenres.set(beatGameIGDBEntries[i].genres[j], genre); - genres.push(genre); - } + + const genresinfo = await getGenres([...cachedGenres]); + + const genres = []; + + for (let i = 0; i < beatGameIGDBEntries.length; i++) { + if (beatGameIGDBEntries[i].genres) { + for (let j = 0; j < beatGameIGDBEntries[i].genres.length; j++) { + genres.push(genresinfo.find(item => item.id === beatGameIGDBEntries[i].genres[j]).name); } } } diff --git a/igdbHelperFunctions.js b/igdbHelperFunctions.js index e661a2e..96207f3 100644 --- a/igdbHelperFunctions.js +++ b/igdbHelperFunctions.js @@ -150,17 +150,17 @@ async function getGenres(id) { 'Client-ID': `${process.env.igdbClientId}`, 'Authorization': `Bearer ${process.env.igdbAccessToken}`, }, - body: `where id = ${id}; fields *;`, + body: `where id = (${id}); fields *; limit ${id.length};`, }) .then(response => response.json()) .then(response => { - genre = response[0]; + genre = response; }) .catch(err => { console.error(err); }); - return genre.name; + return genre; } async function getFranchise(id) {