aboutsummaryrefslogtreecommitdiff
path: root/handler/command.js
diff options
context:
space:
mode:
Diffstat (limited to 'handler/command.js')
-rwxr-xr-xhandler/command.js137
1 files changed, 137 insertions, 0 deletions
diff --git a/handler/command.js b/handler/command.js
new file mode 100755
index 0000000..c1cfe22
--- /dev/null
+++ b/handler/command.js
@@ -0,0 +1,137 @@
+const fs = require('fs');
+const { MessageActionRow, MessageButton, MessageSelectMenu, MessageEmbed } = require('discord.js');
+
+const getResult = require('../result');
+const getEmbed = require('../embed');
+
+module.exports = async (interaction) => {
+ if (interaction.commandName === 'lang') {
+ lang = interaction.options.getString('locale');
+ if (lang === "fr") {
+ langs[interaction.user.id] = "fr";
+ } else {
+ langs[interaction.user.id] = "en";
+ }
+ fs.writeFileSync("./userdata.json", JSON.stringify(langs, null, 4));
+ if (typeof servers[interaction.guild.id] !== "undefined") {
+ if (lang === "fr") {
+ await interaction.reply({
+ ephemeral: false,
+ embeds: [
+ new MessageEmbed()
+ .setColor('#28dc46')
+ .setTitle(l("Language settings", "Paramètres de langue", interaction.user.id, interaction.guild.id))
+ .setDescription(l("Your preferred language is now **French**.\n\n> **Note:** This server enforces English for all users, your personal preferred language won't apply here.", "Votre langue principale est maintenant le **français**.\n\n> **Note :** Ce serveur oblige l'utilisation du français pour tous les utilisateurs, votre option de langue personelle ne s'appliquera pas ici.", interaction.user.id, interaction.guild.id))
+ ]
+ });
+ } else {
+ await interaction.reply({
+ ephemeral: false,
+ embeds: [
+ new MessageEmbed()
+ .setColor('#28dc46')
+ .setTitle(l("Language settings", "Paramètres de langue", interaction.user.id, interaction.guild.id))
+ .setDescription(l("Your preferred language is now **English**.\n\n> **Note:** This server enforces English for all users, your personal preferred language won't apply here.", "Votre langue principale est maintenant le **anglais**.\n\n> **Note :** Ce serveur oblige l'utilisation du français pour tous les utilisateurs, votre option de langue personelle ne s'appliquera pas ici.", interaction.user.id, interaction.guild.id))
+ ]
+ });
+ }
+ } else {
+ await interaction.reply({
+ ephemeral: false,
+ embeds: [
+ new MessageEmbed()
+ .setColor('#28dc46')
+ .setTitle(l("Language settings", "Paramètres de langue", interaction.user.id, interaction.guild.id))
+ .setDescription(l("Your preferred language is now **English**.", "Votre langue principale est maintenant le **français**.", interaction.user.id, interaction.guild.id))
+ ]
+ });
+ }
+ }
+
+ if (interaction.commandName === 'serverlang') {
+ lang = interaction.options.getString('locale');
+ if (lang === "fr") {
+ servers[interaction.guild.id] = "fr";
+ } else if (lang === "en") {
+ servers[interaction.guild.id] = "en";
+ } else {
+ delete servers[interaction.guild.id];
+ }
+ fs.writeFileSync("./servers.json", JSON.stringify(servers, null, 4));
+ if (lang === "en" || lang === "fr") {
+ await interaction.reply({
+ ephemeral: false,
+ embeds: [
+ new MessageEmbed()
+ .setColor('#28dc46')
+ .setTitle(l("Server language settings", "Paramètres de langue du serveur", interaction.user.id, interaction.guild.id))
+ .setDescription(l("This server's enforced language is now **English**.", "La langue forcée sur ce serveur est maintenant le **français**.", interaction.user.id, interaction.guild.id))
+ ]
+ });
+ } else {
+ await interaction.reply({
+ ephemeral: false,
+ embeds: [
+ new MessageEmbed()
+ .setColor('#28dc46')
+ .setTitle(l("Server language settings", "Paramètres de langue du serveur", interaction.user.id, interaction.guild.id))
+ .setDescription(l("This server's enforced language is the user's prefered language.", "La langue forcée sur ce serveur est la langue de l'utilisateur.", interaction.user.id, interaction.guild.id))
+ ]
+ });
+ }
+ }
+
+ if (interaction.commandName === 'pony') {
+ query = interaction.options.getString('query');
+ result = getResult(query);
+
+ if (result.results.length > 0 && getEmbed(result.results[0], interaction.user.id, interaction.guild.id) !== false) {
+ await interaction.reply({
+ ephemeral: false,
+ embeds: [
+ getEmbed(result.results[0], interaction.user.id, interaction.guild.id)
+ ],
+ components: [
+ new MessageActionRow()
+ .addComponents(
+ new MessageButton()
+ .setLabel(l("Read More", "Lire plus", interaction.user.id, interaction.guild.id))
+ .setStyle("LINK")
+ .setURL("https://mlp.fandom.com/wiki/" + encodeURI(result.results[0])),
+ new MessageButton()
+ .setCustomId("pony.pixel|" + result.results[0])
+ .setLabel("Pixel Art")
+ .setStyle("SECONDARY"),
+ new MessageButton()
+ .setCustomId("result.report|" + result.results[0])
+ .setLabel(l("Report an issue", "Signaler un problème", interaction.user.id, interaction.guild.id))
+ .setStyle("DANGER")
+ )
+ ]
+ });
+ } else {
+ await interaction.reply({
+ ephemeral: false,
+ embeds: [
+ new MessageEmbed()
+ .setColor('#dc2828')
+ .setTitle(l("Results for", "Résultats pour", interaction.user.id, interaction.guild.id) + " \"" + query + "\"")
+ .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.id))
+ ],
+ 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.id))
+ .setStyle("SECONDARY"),
+ new MessageButton()
+ .setCustomId("result.report")
+ .setLabel(l("Report an issue", "Signaler un problème", interaction.user.id, interaction.guild.id))
+ .setStyle("DANGER")
+ )
+ ]
+ });
+ }
+ }
+} \ No newline at end of file