aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/embed.js190
-rw-r--r--modules/pixel.js25
-rw-r--r--modules/registers.js36
-rw-r--r--modules/result.js41
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