aboutsummaryrefslogtreecommitdiff
path: root/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'index.js')
-rwxr-xr-x[-rw-r--r--]index.js178
1 files changed, 35 insertions, 143 deletions
diff --git a/index.js b/index.js
index fae95fa..905666c 100644..100755
--- a/index.js
+++ b/index.js
@@ -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