aboutsummaryrefslogtreecommitdiff
path: root/bot.js
diff options
context:
space:
mode:
Diffstat (limited to 'bot.js')
-rw-r--r--bot.js77
1 files changed, 77 insertions, 0 deletions
diff --git a/bot.js b/bot.js
new file mode 100644
index 0000000..978544b
--- /dev/null
+++ b/bot.js
@@ -0,0 +1,77 @@
+// Stable: https://discord.com/oauth2/authorize?client_id=928695013083316295&scope=bot%20applications.commands&permissions=0
+// Beta: https://discord.com/oauth2/authorize?client_id=929057534491361341&scope=bot%20applications.commands&permissions=0
+
+console.log("Channel: " + (require('fs').existsSync("./beta") ? "beta" : "stable"));
+global.channel = (require('fs').existsSync("./beta") ? "beta" : "stable");
+
+const fs = require('fs');
+const { REST } = require('@discordjs/rest');
+const { Routes } = require('discord-api-types/v9');
+
+if (!fs.existsSync("./user/userdata.json")) fs.writeFileSync("./user/userdata.json", "{}");
+if (!fs.existsSync("./user/spoilers.json")) fs.writeFileSync("./user/spoilers.json", "{}");
+if (!fs.existsSync("./user/servers.json")) fs.writeFileSync("./user/servers.json", "{}");
+if (!fs.existsSync("./reports")) fs.mkdirSync("./reports");
+
+const rest = new REST({ version: '9' }).setToken(fs.readFileSync("./config/token." + (require('fs').existsSync("./beta") ? "beta" : "stable") + ".txt").toString());
+const { Client, Intents, MessageActionRow, MessageButton, MessageSelectMenu, MessageEmbed } = require('discord.js');
+global.client = new Client({ intents: [Intents.FLAGS.GUILDS] });
+
+const commandHandler = require('./handler/command');
+const buttonHandler = require('./handler/button');
+const menuHandler = require('./handler/menu');
+const errorHandler = require('./handler/errors');
+
+global.langs = JSON.parse(fs.readFileSync("./user/userdata.json"));
+global.spoils = JSON.parse(fs.readFileSync("./user/spoilers.json"));
+global.servers = JSON.parse(fs.readFileSync("./user/servers.json"));
+
+global.l = (en, fr, id, gid) => {
+ if (typeof servers[gid] !== "undefined") {
+ if (servers[gid] === "fr") {
+ return fr;
+ } else {
+ return en;
+ }
+ } else {
+ if (langs[id] === "fr") {
+ return fr;
+ } else {
+ return en;
+ }
+ }
+}
+
+const commands = require('./modules/registers');
+
+client.on('ready', async () => {
+ console.log(`Logged in as ${client.user.tag}!`);
+ console.log("Started refreshing application (/) commands globally");
+
+ await rest.put(
+ Routes.applicationCommands(fs.readFileSync("./config/client." + (require('fs').existsSync("./beta") ? "beta" : "stable") + ".txt").toString()),
+ { body: commands },
+ );
+
+ console.log("Successfully reloaded application (/) commands globally");
+});
+
+client.on('interactionCreate', async interaction => {
+ if (!interaction) { return; }
+
+ try {
+ 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) {
+ errorHandler(interaction, e)
+ }
+});
+
+client.login(fs.readFileSync("./config/token." + (require('fs').existsSync("./beta") ? "beta" : "stable") + ".txt").toString()); \ No newline at end of file