diff options
Diffstat (limited to 'commands/episode.js')
-rw-r--r-- | commands/episode.js | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/commands/episode.js b/commands/episode.js index d6113a4..e79e9b0 100644 --- a/commands/episode.js +++ b/commands/episode.js @@ -3,12 +3,52 @@ const { MessageActionRow, MessageButton, MessageSelectMenu, MessageEmbed } = req 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]++; @@ -17,7 +57,6 @@ module.exports = async (interaction) => { } fs.writeFile("./stats/episodes.json", JSON.stringify(statsEpisodes), () => {}); - let sdata = series.filter(i => i.command.toLowerCase() === select)[0]; if (typeof episode === "string") { await episodeReply(interaction, select, episode, sdata); } |