diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/embed.js | 190 | ||||
-rw-r--r-- | modules/pixel.js | 25 | ||||
-rw-r--r-- | modules/registers.js | 36 | ||||
-rw-r--r-- | modules/result.js | 41 |
4 files changed, 292 insertions, 0 deletions
diff --git a/modules/embed.js b/modules/embed.js new file mode 100644 index 0000000..9c2ab0a --- /dev/null +++ b/modules/embed.js @@ -0,0 +1,190 @@ +const { MessageEmbed } = require("discord.js"); +const data = require('../data/data.json'); + +module.exports = (page, id, gid) => { + if (typeof data[page] === "undefined") { + return false; + } + + d = data[page]; + + let sign = ""; + switch (page) { + case "Rainbow Dash": + sign = "đ"; + break; + + case "Twilight Sparkle": + sign = "âš"; + break; + + case "Pinkie Pie": + sign = "đ"; + break; + + case "Applejack": + sign = "đ"; + break; + + case "Fluttershy": + sign = "đ"; + break; + + case "Rarity": + sign = "đŠ"; + break; + + default: + sign = ""; + break; + } + + let kind = l("Unknown", "Inconnu", id, gid); + switch (d.kind) { + case "Pegasus": + kind = l("Pegasus", "PĂ©gase", id, gid) + break; + + case "Earth": + kind = l("Earth Pony", "Poney terrestre", id, gid) + break; + + case "Ahuizotl": + kind = l("Ahiuzotl", "Ahuizotl", id, gid) + break; + + case "Rabbit": + kind = l("Rabbit", "Lapin", id, gid) + break; + + case "Pony": + kind = l("Pony", "Poney", id, gid) + break; + + case "Unicorn": + kind = l("Unicorn", "Licorne", id, gid) + break; + + case "Draconequus": + kind = l("Draconequus", "Draconequus", id, gid) + break; + + case "Griffon": + kind = l("Griffon", "Gryphon", id, gid) + break; + + case "Alligator": + kind = l("Alligator", "Alligator", id, gid) + break; + + case "Minotaur": + kind = l("Minotaur", "Minotaure", id, gid) + break; + + case "Buffalo": + kind = l("Buffalo", "Buffle", id, gid) + break; + + case "Alicorn": + kind = l("Alicorn", "Alicorne", id, gid) + break; + + case "Persian": + kind = l("Persian", "Persien", id, gid) + break; + + case "Owl": + kind = l("Owl", "Hibou", id, gid) + break; + + case "Phoenix": + kind = l("Phoenix", "PhĂ©nix", id, gid) + break; + + case "Changelingbr": + kind = l("Changelingbr", "Changelingbr", id, gid) + break; + + case "Breezie": + kind = l("Breezie", "Brisie", id, gid) + break; + + case "Dragon": + kind = l("Dragon", "Dragon", id, gid) + break; + + case "Sea": + kind = l("Sea", "Mer", id, gid) + break; + + case "Tortoise": + kind = l("Tortoise", "Tortue", id, gid) + break; + + case "Centaurref": + kind = l("Centaurref", "Centaurref", id, gid) + break; + + case "Collie": + kind = l("Collie", "Collie", id, gid) + break; + + case "Zebrabr": + kind = l("Zebrabr", "Zebrabr", id, gid) + break; + } + + names = [...new Set(d.names.filter(e => e.trim().toLowerCase() !== page.toLowerCase()))]; + + let naming = "-"; + if (names.length > 5) { + naming = "- " + names[0] + "\n- " + names[1] + "\n- " + names[2] + "\n- " + names[3] + "\n- " + names[4] + "\n*" + l("and " + (names.length - 5) + " others", "et " + (names.length - 5) + " autres", id, gid) + "*" + } else { + if (names.length > 1) { + naming = "- " + names.join("\n- ") + } else { + naming = names[0]; + } + } + + if (typeof naming === "undefined" || naming.trim() === "") { + naming = "-"; + } + + let jobs = page; + if (d.occupation.length > 5) { + jobs = "- " + d.occupation[0] + "\n- " + d.occupation[1] + "\n- " + d.occupation[2] + "\n- " + d.occupation[3] + "\n- " + d.occupation[4] + "\n*" + l("and " + (d.occupation.length - 5) + " others", "et " + (d.occupation.length - 5) + " autres", id, gid) + "*" + } else { + if (d.occupation.length > 1) { + jobs = "- " + d.occupation.join("\n- ") + } else { + jobs = d.occupation[0]; + } + } + + let location = page; + if (d.residence.length > 5) { + location = "- " + d.residence[0] + "\n- " + d.residence[1] + "\n- " + d.residence[2] + "\n- " + d.residence[3] + "\n- " + d.residence[4] + "\n*" + l("and " + (d.residence.length - 5) + " others", "et " + (d.residence.length - 5) + " autres", id, gid) + "*" + } else { + if (d.residence.length > 1) { + location = "- " + d.residence.join("\n- ") + } else { + location = d.residence[0]; + } + } + + return new MessageEmbed() + .setColor(d.color.length === 6 ? d.color : "ffffff") + .setTitle(page + " " + sign) + .setDescription(l(d.extract, d.extract_fr, id, gid)) + .setImage(d.image) + .setThumbnail(d.mark) + .addFields([ + { name: l("Nicknames", "Surnoms", id, gid), value: naming, inline: true }, + { name: l("Sex", "Sexe", id, gid), value: d.sex === "F" ? "â" : "â", inline: true }, + { name: l("Kind", "Type", id, gid), value: kind, inline: true }, + { name: l("Occupation(s)", "Occupation(s)", id, gid), value: "(" + l("spoilers", "rĂ©vĂ©lations", id, gid) + ")\n||" + jobs + "||", inline: true }, + { name: l("Home(s)", "RĂ©sidence(s)", id, gid), value: "(" + l("spoilers", "rĂ©vĂ©lations", id, gid) + ")\n||" + location + "||", inline: true } + ]) + .setFooter(l("Content provided without warranty, use at your own risk.", "Contenu fourni sans aucune garantie, utilisez Ă vos risques et pĂ©rils", id, gid)) +}
\ No newline at end of file diff --git a/modules/pixel.js b/modules/pixel.js new file mode 100644 index 0000000..ec6ee0a --- /dev/null +++ b/modules/pixel.js @@ -0,0 +1,25 @@ +const fs = require('fs'); +const Fuse = require('fuse.js'); +const list = fs.readdirSync("./pixel"); + +const fuse = new Fuse(list); + +module.exports = (pony) => { + dir = fuse.search(pony)[0].item; + files = fs.readdirSync("./pixel/" + dir + "/"); + + if (fs.existsSync("./pixel/" + dir + "/stand_left.gif")) { + return "./pixel/" + dir + "/stand_left.gif"; + } else { + for (let item of files) { + if (item.includes("stand_") && item.includes("left") && (item.includes(".gif") || item.includes(".png"))) { + return "./pixel/" + dir + "/" + item; + } + } + } + + const flst = new Fuse(files); + file = flst.search("stand_left.gif")[0].item; + + return "./pixel/" + dir + "/" + file; +}
\ No newline at end of file diff --git a/modules/registers.js b/modules/registers.js new file mode 100644 index 0000000..f99e274 --- /dev/null +++ b/modules/registers.js @@ -0,0 +1,36 @@ +const { SlashCommandBuilder } = require('@discordjs/builders'); + +module.exports = [ + new SlashCommandBuilder() + .setName('pony') + .setDescription("Searches for a pony") + .addStringOption(option => + option.setName("query") + .setDescription("The pony to search for") + .setRequired(true) + ), + new SlashCommandBuilder() + .setName('stats') + .setDescription("Gets stats about the bot"), + new SlashCommandBuilder() + .setName('lang') + .setDescription("Changes the bot's language") + .addStringOption(option => + option.setName('locale') + .setDescription('The selected language') + .setRequired(true) + .addChoice('Français', 'fr') + .addChoice('English', 'en') + ), + new SlashCommandBuilder() + .setName('serverlang') + .setDescription("Changes the bot's language on this server") + .addStringOption(option => + option.setName('locale') + .setDescription('The selected language') + .setRequired(true) + .addChoice('Français', 'fr') + .addChoice('English', 'en') + .addChoice('User prefered language (default)', 'off') + ) +]
\ No newline at end of file diff --git a/modules/result.js b/modules/result.js new file mode 100644 index 0000000..3f94ebb --- /dev/null +++ b/modules/result.js @@ -0,0 +1,41 @@ +const db = require('../data/search.json').associations; +const Fuse = require('fuse.js'); + +module.exports = (query) => { + const fuse = new Fuse(db, { + keys: [ 'title', 'endpoint' ] + }) + + let results = []; + for (let item of fuse.search(query)) { + results.push(item.item.endpoint); + } + + if (fuse.search(query).length > 0) { + exact = fuse.search(query)[0].item.endpoint; + } else { + exact = null; + } + + let first = [ + null, + null, + null + ] + + findex = 0; + for (let result of fuse.search(query)) { + if (!first.includes(result.item.endpoint) && findex < 3) { + first[findex] = result.item.endpoint + findex++ + } + } + + console.log(first); + + return { + results, + first, + exact + }; +}
\ No newline at end of file |