const fs = require('fs'); const { MessageActionRow, MessageButton, MessageSelectMenu, MessageEmbed } = require('discord.js'); const getEpisodePublic = require("../modules/episodepublic"); const episodeReply = require("../modules/episodereply"); const getEpisodes = require("../modules/findepisode"); const series = JSON.parse(fs.readFileSync("./data/series.json").toString()); module.exports = async (interaction) => { let select = interaction.options.getSubcommand(); let episode = interaction.options.getString('episode').toLowerCase(); let ep_orig = episode; let sdata = series.filter(i => i.command.toLowerCase() === select)[0]; // Check if it's a valid episode try { let sid = episode.split("-")[0]; let spt = sid.substring(1); let eid = episode.split("-")[1]; let edata = sdata.seasons.filter(i => i.id === sid)[0].episodes.filter(i => i.local - 1 + 1 === eid - 1 + 1)[0]; } catch (e) { // If it's not, run the search engine try { episode = getEpisodes(series.filter(i => i.command.toLowerCase() === select)[0], episode)[0].value; let sid = episode.split("-")[0]; let spt = sid.substring(1); let eid = episode.split("-")[1]; let edata = sdata.seasons.filter(i => i.id === sid)[0].episodes.filter(i => i.local - 1 + 1 === eid - 1 + 1)[0]; } catch (e) { // If no result is found, return an error message await interaction.reply({ ephemeral: interaction.guild !== null, embeds: [ new MessageEmbed() .setColor('#dc2828') .setTitle(l("Results for", "Résultats pour", interaction.user.id, interaction.guild ? interaction.guild.id : 0) + " \"" + ep_orig + "\"") .setDescription(l("No results found. Please try with other keywords.", "Aucun résultat trouvé. Essayez avec d'autres mots clés.", interaction.user.id, interaction.guild ? interaction.guild.id : 0)) ], components: [ new MessageActionRow() .addComponents( new MessageButton() .setCustomId("result.report|" + ep_orig) .setLabel(l("Report an issue", "Signaler un problème", interaction.user.id, interaction.guild ? interaction.guild.id : 0)) .setStyle("DANGER") ) ] }); return; } } if (statsEpisodes[select + "-" + episode] !== undefined) { statsEpisodes[select + "-" + episode]++; } else { statsEpisodes[select + "-" + episode] = 1; } fs.writeFile("./stats/episodes.json", JSON.stringify(statsEpisodes), () => {}); if (typeof episode === "string") { await episodeReply(interaction, select, episode, sdata); } }