diff options
Diffstat (limited to 'index.js')
-rwxr-xr-x[-rw-r--r--] | index.js | 178 |
1 files changed, 35 insertions, 143 deletions
@@ -1,49 +1,44 @@ -// https://discord.com/oauth2/authorize?client_id=928695013083316295&scope=bot%20applications.commands&permissions=8 +// Stable: https://discord.com/oauth2/authorize?client_id=928695013083316295&scope=bot%20applications.commands&permissions=8 +// Beta: https://discord.com/oauth2/authorize?client_id=929057534491361341&scope=bot%20applications.commands&permissions=8 + +console.log("Channel: " + (typeof process.argv[2] !== "undefined" ? "beta" : "stable")); const fs = require('fs'); const { REST } = require('@discordjs/rest'); -const { SlashCommandBuilder } = require('@discordjs/builders'); const { Routes } = require('discord-api-types/v9'); if (!fs.existsSync("./userdata.json")) fs.writeFileSync("./userdata.json", "{}"); +if (!fs.existsSync("./servers.json")) fs.writeFileSync("./servers.json", "{}"); -const rest = new REST({ version: '9' }).setToken(fs.readFileSync("./token.txt").toString()); +const rest = new REST({ version: '9' }).setToken(fs.readFileSync("./token." + (typeof process.argv[2] !== "undefined" ? "beta" : "stable") + ".txt").toString()); const { Client, Intents, MessageActionRow, MessageButton, MessageSelectMenu, MessageEmbed } = require('discord.js'); const client = new Client({ intents: [Intents.FLAGS.GUILDS] }); -const getResult = require('./result'); -const getEmbed = require('./embed'); +const commandHandler = require('./handler/command'); +const buttonHandler = require('./handler/button'); +const menuHandler = require('./handler/menu'); +const errorHandler = require('./handler/errors'); -let langs = JSON.parse(fs.readFileSync("./userdata.json")); +global.langs = JSON.parse(fs.readFileSync("./userdata.json")); +global.servers = JSON.parse(fs.readFileSync("./servers.json")); -global.l = (en, fr, id) => { - if (langs[id] === "fr") { - return fr; +global.l = (en, fr, id, gid) => { + if (typeof servers[gid] !== "undefined") { + if (servers[gid] === "fr") { + return fr; + } else { + return en; + } } else { - return en; + if (langs[id] === "fr") { + return fr; + } else { + return en; + } } } -const commands = [ - 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('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') - ) -]; +const commands = require('./registers'); client.on('ready', async () => { console.log(`Logged in as ${client.user.tag}!`); @@ -64,122 +59,19 @@ client.on('ready', async () => { }); client.on('interactionCreate', async interaction => { - if (!interaction.isCommand()) return; - try { - 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)); - await interaction.reply({ - ephemeral: false, - embeds: [ - new MessageEmbed() - .setColor('#28dc46') - .setTitle(l("Language settings", "Paramètres de langue", interaction.user.id)) - .setDescription(l("Your preferred language is now **English**.", "Votre langue principale est maintenant le **français**.", interaction.user.id)) - ] - }); - } - - if (interaction.commandName === 'pony') { - query = interaction.options.getString('query'); - result = getResult(query, interaction.user.id); - - if (result.results.length > 0 && getEmbed(result.results[0], interaction.user.id) !== false) { - await interaction.reply({ - ephemeral: false, - embeds: [ - getEmbed(result.results[0], interaction.user.id) - ], - components: [ - new MessageActionRow() - .addComponents( - new MessageButton() - .setLabel(l("Read More", "Lire plus", interaction.user.id)) - .setStyle("LINK") - .setURL("https://mlp.fandom.com/wiki/" + encodeURI(result.results[0])), - new MessageButton() - .setCustomId("pixel") - .setLabel("Pixel Art") - .setStyle("SECONDARY"), - new MessageButton() - .setCustomId("report") - .setLabel(l("Report an issue", "Signaler un problème", interaction.user.id)) - .setStyle("DANGER") - ) - ] - }); - } else { - await interaction.reply({ - ephemeral: false, - embeds: [ - new MessageEmbed() - .setColor('#dc2828') - .setTitle(l("Results for", "Résultats pour", interaction.user.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)) - ], - components: [ - new MessageActionRow() - .addComponents( - new MessageButton() - .setCustomId("pixel") - .setLabel(l("Suggest a missing pony", "Proposer un poney manquant", interaction.user.id)) - .setStyle("SECONDARY"), - new MessageButton() - .setCustomId("report") - .setLabel(l("Report an issue", "Signaler un problème", interaction.user.id)) - .setStyle("DANGER") - ) - ] - }); - } + if (interaction.isCommand()) { + await commandHandler(interaction); + } else if (interaction.isButton()) { + await buttonHandler(interaction); + } else if (interaction.isSelectMenu()) { + await menuHandler(interaction); + } else { + throw new Error("Interaction type not supported") } } catch (e) { - try { - await interaction.reply({ - ephemeral: false, - embeds: [ - new MessageEmbed() - .setColor('#dc2828') - .setTitle(l("An internal exception occurred", "Une erreur interne s'est produite", interaction.user.id)) - .setDescription("```\n" + e.stack + "\n```") - ], - components: [ - new MessageActionRow() - .addComponents( - new MessageButton() - .setCustomId("report") - .setLabel(l("Send bug report", "Envoyer un rapport de bug", interaction.user.id)) - .setStyle("DANGER") - ) - ] - }); - } catch (e) { - await interaction.reply({ - ephemeral: false, - embeds: [ - new MessageEmbed() - .setColor('#dc2828') - .setTitle("An internal exception occurred") - .setDescription("```\n" + e.stack + "\n```") - ], - components: [ - new MessageActionRow() - .addComponents( - new MessageButton() - .setCustomId("report") - .setLabel("Send bug report") - .setStyle("DANGER") - ) - ] - }); - } + errorHandler(interaction, e) } }); -client.login(fs.readFileSync("./token.txt").toString());
\ No newline at end of file +client.login(fs.readFileSync("./token." + (typeof process.argv[2] !== "undefined" ? "beta" : "stable") + ".txt").toString());
\ No newline at end of file |