aboutsummaryrefslogtreecommitdiff
path: root/commands/episode.js
blob: e79e9b096ed841a27ecfa6b85a021ef48a03abb9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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);
    }
}