From fb91b381cf79b95210bcc6bf628e4f0ab337e74d Mon Sep 17 00:00:00 2001 From: Minteck Date: Wed, 16 Mar 2022 16:33:08 +0100 Subject: v2.3 --- commands/color.js | 237 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 134 insertions(+), 103 deletions(-) (limited to 'commands/color.js') diff --git a/commands/color.js b/commands/color.js index cf9df1d..9a41bf0 100755 --- a/commands/color.js +++ b/commands/color.js @@ -38,132 +38,163 @@ const official = fs.readFileSync("./config/official.txt").toString().replace(/\r const fpserver = fs.readFileSync("./config/fpserver.txt").toString().trim(); module.exports = async (interaction) => { - query = interaction.options.getString('query').toLowerCase(); - result = getResult(query, interaction.user.id, interaction.guild ? interaction.guild.id : 0); + if (interaction.options.getString('query') !== null) { + query = interaction.options.getString('query').toLowerCase(); + result = getResult(query, interaction.user.id, interaction.guild ? interaction.guild.id : 0); - if (result.results.length > 0 && getEmbed(result.results[0], interaction.user.id, interaction.guild ? interaction.guild.id : 0) !== false) { - if (statsQueries[result.results[0]] !== undefined) { - if (!statsQueries[result.results[0]].includes(query)) { - statsQueries[result.results[0]].push(query); - } - } else { - statsQueries[result.results[0]] = [ query ]; - } - fs.writeFile("./stats/queries.json", JSON.stringify(statsQueries), () => {}); - if (result.results[0].toLowerCase().trim() === query.toLowerCase().trim()) { - keys = [null, result.results[0]]; - if (statsPonies[keys[1]] !== undefined) { - statsPonies[keys[1]]++; + if (result.results.length > 0 && getEmbed(result.results[0], interaction.user.id, interaction.guild ? interaction.guild.id : 0) !== false) { + if (statsQueries[result.results[0]] !== undefined) { + if (!statsQueries[result.results[0]].includes(query)) { + statsQueries[result.results[0]].push(query); + } } else { - statsPonies[keys[1]] = 1; + statsQueries[result.results[0]] = [ query ]; } - fs.writeFile("./stats/ponies.json", JSON.stringify(statsPonies), () => {}); - if (interaction.guild) { - row = new MessageActionRow() - .addComponents( - getPublic(interaction, keys), - new MessageButton() - .setLabel(l("Read More", "Lire plus", interaction.user.id, interaction.guild ? interaction.guild.id : 0)) - .setStyle("LINK") - .setURL("https://mlp.fandom.com/wiki/" + encodeURI(keys[1])), - new MessageButton() - .setCustomId("pony.pixel|" + keys[1]) - .setLabel("Pixel Art") - .setDisabled(!fs.existsSync("./pixel/" + keys[1].toLowerCase())) - .setStyle("SECONDARY"), - new MessageButton() - .setCustomId("result.report|" + keys[1]) - .setLabel(l("Report an issue", "Signaler un problème", interaction.user.id, interaction.guild ? interaction.guild.id : 0)) - .setStyle("DANGER") - ) + fs.writeFile("./stats/queries.json", JSON.stringify(statsQueries), () => {}); + if (result.results[0].toLowerCase().trim() === query.toLowerCase().trim()) { + keys = [null, result.results[0]]; + if (statsPonies[keys[1]] !== undefined) { + statsPonies[keys[1]]++; + } else { + statsPonies[keys[1]] = 1; + } + fs.writeFile("./stats/ponies.json", JSON.stringify(statsPonies), () => {}); + if (interaction.guild) { + row = new MessageActionRow() + .addComponents( + getPublic(interaction, keys), + new MessageButton() + .setLabel(l("Read More", "Lire plus", interaction.user.id, interaction.guild ? interaction.guild.id : 0)) + .setStyle("LINK") + .setURL("https://mlp.fandom.com/wiki/" + encodeURI(keys[1])), + new MessageButton() + .setCustomId("pony.pixel|" + keys[1]) + .setLabel("Pixel Art") + .setDisabled(!fs.existsSync("./pixel/" + keys[1].toLowerCase())) + .setStyle("SECONDARY"), + new MessageButton() + .setCustomId("result.report|" + keys[1]) + .setLabel(l("Report an issue", "Signaler un problème", interaction.user.id, interaction.guild ? interaction.guild.id : 0)) + .setStyle("DANGER") + ) + } else { + row = new MessageActionRow() + .addComponents( + new MessageButton() + .setLabel(l("Read More", "Lire plus", interaction.user.id, interaction.guild ? interaction.guild.id : 0)) + .setStyle("LINK") + .setURL("https://mlp.fandom.com/wiki/" + encodeURI(keys[1])), + new MessageButton() + .setCustomId("pony.pixel|" + keys[1]) + .setLabel("Pixel Art") + .setDisabled(!fs.existsSync("./pixel/" + keys[1].toLowerCase())) + .setStyle("SECONDARY"), + new MessageButton() + .setCustomId("result.report|" + keys[1]) + .setLabel(l("Report an issue", "Signaler un problème", interaction.user.id, interaction.guild ? interaction.guild.id : 0)) + .setStyle("DANGER") + ) + } + console.log("Replying (embed)"); + await interaction.reply({ + ephemeral: interaction.guild !== null, + embeds: [ + getEmbed(keys[1], interaction.user.id, interaction.guild ? interaction.guild.id : 0, false, interaction.user, interaction.member, interaction.guild) + ], + components: [ + row + ] + }); } else { - row = new MessageActionRow() - .addComponents( - new MessageButton() - .setLabel(l("Read More", "Lire plus", interaction.user.id, interaction.guild ? interaction.guild.id : 0)) - .setStyle("LINK") - .setURL("https://mlp.fandom.com/wiki/" + encodeURI(keys[1])), - new MessageButton() - .setCustomId("pony.pixel|" + keys[1]) - .setLabel("Pixel Art") - .setDisabled(!fs.existsSync("./pixel/" + keys[1].toLowerCase())) - .setStyle("SECONDARY"), - new MessageButton() - .setCustomId("result.report|" + keys[1]) - .setLabel(l("Report an issue", "Signaler un problème", interaction.user.id, interaction.guild ? interaction.guild.id : 0)) - .setStyle("DANGER") - ) + console.log("Replying (buttons)"); + await interaction.reply({ + ephemeral: interaction.guild !== null, + embeds: [ + new MessageEmbed() + .setColor('#d6dc28') + .setTitle(l("Results for", "Résultats pour", interaction.user.id, interaction.guild ? interaction.guild.id : 0) + " " + result.query) + .setDescription(l("Here are the 5 first results corresponding to your criteria.", "Voici les 5 premiers résultats correspondants à vos critères.", interaction.user.id, interaction.guild ? interaction.guild.id : 0)) + .addField(l("Your conditions:", "Vos conditions :", interaction.user.id, interaction.guild ? interaction.guild.id : 0), result.full) + ], + components: [ + new MessageActionRow() + .addComponents( + new MessageButton() + .setCustomId("pony.display|" + result.first[0]) + .setLabel(result.first[0]) + .setStyle(result.exact.includes(result.first[0]) ? "PRIMARY" : "SECONDARY"), + new MessageButton() + .setCustomId("pony.display|" + result.first[1]) + .setLabel(result.first[1]) + .setStyle(result.exact.includes(result.first[1]) ? "PRIMARY" : "SECONDARY"), + new MessageButton() + .setCustomId("pony.display|" + result.first[2]) + .setLabel(result.first[2]) + .setStyle(result.exact.includes(result.first[2]) ? "PRIMARY" : "SECONDARY"), + new MessageButton() + .setCustomId("pony.display|" + result.first[3]) + .setLabel(result.first[3]) + .setStyle(result.exact.includes(result.first[3]) ? "PRIMARY" : "SECONDARY"), + new MessageButton() + .setCustomId("pony.display|" + result.first[4]) + .setLabel(result.first[4]) + .setStyle(result.exact.includes(result.first[4]) ? "PRIMARY" : "SECONDARY"), + ), + ] + }); } - console.log("Replying (embed)"); - await interaction.reply({ - ephemeral: interaction.guild !== null, - embeds: [ - getEmbed(keys[1], interaction.user.id, interaction.guild ? interaction.guild.id : 0, false, interaction.user, interaction.member, interaction.guild) - ], - components: [ - row - ] - }); } else { - console.log("Replying (buttons)"); + console.log("Replying (no results)"); await interaction.reply({ ephemeral: interaction.guild !== null, embeds: [ new MessageEmbed() - .setColor('#d6dc28') + .setColor('#dc2828') .setTitle(l("Results for", "Résultats pour", interaction.user.id, interaction.guild ? interaction.guild.id : 0) + " " + result.query) - .setDescription(l("Here are the 5 first results corresponding to your criteria.", "Voici les 5 premiers résultats correspondants à vos critères.", interaction.user.id, interaction.guild ? interaction.guild.id : 0)) - .addField(l("Your conditions:", "Vos conditions :", interaction.user.id, interaction.guild ? interaction.guild.id : 0), result.full) + .setDescription(l("No results found. Please try with other criteria.", "Aucun résultat trouvé. Essayez avec d'autres critères.", interaction.user.id, interaction.guild ? interaction.guild.id : 0)) ], components: [ new MessageActionRow() .addComponents( new MessageButton() - .setCustomId("pony.display|" + result.first[0]) - .setLabel(result.first[0]) - .setStyle(result.exact.includes(result.first[0]) ? "PRIMARY" : "SECONDARY"), - new MessageButton() - .setCustomId("pony.display|" + result.first[1]) - .setLabel(result.first[1]) - .setStyle(result.exact.includes(result.first[1]) ? "PRIMARY" : "SECONDARY"), - new MessageButton() - .setCustomId("pony.display|" + result.first[2]) - .setLabel(result.first[2]) - .setStyle(result.exact.includes(result.first[2]) ? "PRIMARY" : "SECONDARY"), + .setCustomId("result.suggest|" + query) + .setLabel(l("Suggest a missing pony", "Proposer un poney manquant", interaction.user.id, interaction.guild ? interaction.guild.id : 0)) + .setStyle("SECONDARY"), new MessageButton() - .setCustomId("pony.display|" + result.first[3]) - .setLabel(result.first[3]) - .setStyle(result.exact.includes(result.first[3]) ? "PRIMARY" : "SECONDARY"), - new MessageButton() - .setCustomId("pony.display|" + result.first[4]) - .setLabel(result.first[4]) - .setStyle(result.exact.includes(result.first[4]) ? "PRIMARY" : "SECONDARY"), - ), + .setCustomId("result.report|" + query) + .setLabel(l("Report an issue", "Signaler un problème", interaction.user.id, interaction.guild ? interaction.guild.id : 0)) + .setStyle("DANGER") + ) ] }); } } else { - console.log("Replying (no results)"); - await interaction.reply({ - ephemeral: interaction.guild !== null, + guild = interaction.guild; + gid = interaction.guild ? interaction.guild.id : 0; + uid = interaction.user.id; + + interaction.reply({ + ephemeral: guild !== null, embeds: [ new MessageEmbed() - .setColor('#dc2828') - .setTitle(l("Results for", "Résultats pour", interaction.user.id, interaction.guild ? interaction.guild.id : 0) + " " + result.query) - .setDescription(l("No results found. Please try with other criteria.", "Aucun résultat trouvé. Essayez avec d'autres critères.", interaction.user.id, interaction.guild ? interaction.guild.id : 0)) - ], - components: [ - new MessageActionRow() - .addComponents( - new MessageButton() - .setCustomId("result.suggest|" + query) - .setLabel(l("Suggest a missing pony", "Proposer un poney manquant", interaction.user.id, interaction.guild ? interaction.guild.id : 0)) - .setStyle("SECONDARY"), - new MessageButton() - .setCustomId("result.report|" + query) - .setLabel(l("Report an issue", "Signaler un problème", interaction.user.id, interaction.guild ? interaction.guild.id : 0)) - .setStyle("DANGER") - ) + .setColor('#d6dc28') + .setTitle(l("Ponyfind's `/color` help", "Aide de la commande `/color` de Ponyfind", uid, guild ? gid : 0)) + .setDescription(l("If this is the first time you want to use the `/color` command, you need to know how it works. This commands search for ponies by their mane/eyes/coat color(s), using a syntax like `[item]:[color]` (e.g. `mane:blue`).", "Si c'est la première fois que vous voulez utiliser la commande `/color`, vous devez savoir comment elle fonctionne. Cette commande permet de chercher des poneys par la/les couleur(s) de leur crinière/yeux/fourrure, en utilisant une syntaxe du style `[élément]:[couleur]` (par exemple `crinière:bleu`).", uid, gid ? guild : 0)) + .addFields([ + { + name: l("Supported Colors", "Couleurs supportées", uid, guild ? gid : 0), + value: l("`white`, `black`, `gray`, `red`, `orange`, `yellow`, `green`, `blue`, `purple`, `pink`, `brown`", "`blanc`, `noir`, `gris`, `rouge`, `orange`, `jaune`, `vert`, `bleu`, `violet`, `rose`, `marron`", uid, guild ? gid : 0) + }, + { + name: l("Supported Items", "Éléments supportés", uid, guild ? gid : 0), + value: l("`coat`, `mane`, `eyes`", "`fourrure`, `crinière`, `yeux`", uid, guild ? gid : 0) + }, + { + name: l("Examples", "Exemples", uid, guild ? gid : 0), + value: l("· `eyes:purple` shows all ponies with purple eyes\n· `coat:gray mane:yellow` shows all ponies with **both** a gray coat and yellow mane\n· `mane:red mane:yellow` shows all ponies with **both** a red and yellow mane", "· `yeux:violet` affiche tous les poneys avec des yeux violets\n· `fourrure:gris crinière:jaune` affiche tous les poneys avec **à la fois** une fourrure grise et une crinière jaune\n· `crinière:rouge crinière:jaune` affiche tous les poneys avec une crinière **à la fois** rouge et jaune", uid, guild ? gid : 0) + } + ]) + .setFooter(l("made with ♥ by Minteck, a My Little Pony fan", "fait avec ♥ par Minteck, une fan de My Little Pony", uid, guild ? gid : 0)) ] }); } -- cgit