/* * MIT License * * Copyright (c) 2022- Minteck * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * */ 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); } }