diff --git a/index.js b/index.js index a850c473e3afa0bf58fd430aac7a0be5a9e8335e..ab67b34ef026a05a4e9fe9e6fd25bda280c71e22 100644 --- a/index.js +++ b/index.js @@ -6,16 +6,15 @@ const { Op } = require("sequelize"); // API externe const express = require('express') const app = express() -var XMLHttpRequest = require('xhr2'); +const XMLHttpRequest = require('xhr2'); // Couleurs de la console -var colors = require('colors'); - +require('colors'); // API discord const { REST } = require('@discordjs/rest'); const { Routes } = require('discord-api-types/v9'); // Moment JS -var moment = require('moment'); +const moment = require('moment'); // Schedule const schedule = require('node-schedule'); @@ -163,15 +162,15 @@ async function initialiseDatabaseTables() { if (token == null) { // INSERT si elle n'existe pas console.log('[' + 'INSERT'.brightMagenta + '] Insertion de token'.brightWhite); - let token = botSettings.create({ + botSettings.create({ name: "token", value: config.get("DISCORD_BOT_TOKEN") }); } else { // UPDATE si différente - if (token.value != config.get("DISCORD_BOT_TOKEN")) { + if (token.value !== config.get("DISCORD_BOT_TOKEN")) { token.update({ value: config.get("DISCORD_BOT_TOKEN") }) - .then(updatedRecord => { + .then(() => { console.log('[' + 'UPDATE'.brightMagenta + '] Mise à jour du token dans la base de donnée'.brightWhite); }).catch(err => { console.log('[' + 'ERREUR'.brightRed + '] Erreur lors de la màj de token dans la base de donnée: '.brightWhite + '\n'); @@ -184,14 +183,14 @@ async function initialiseDatabaseTables() { let clientId = await botSettings.findOne({ where: { name: "clientId" } }); if (clientId == null) { console.log('[' + 'INSERT'.brightMagenta + '] Insertion de clientId'.brightWhite); - let clientId = botSettings.create({ + botSettings.create({ name: "clientId", value: config.get("CLIENT_ID") }); } else { - if (clientId.value != config.get("CLIENT_ID")) { + if (clientId.value !== config.get("CLIENT_ID")) { clientId.update({ value: config.get("CLIENT_ID") }) - .then(updatedRecord => { + .then(() => { console.log('[' + 'UPDATE'.brightMagenta + '] Mise à jour du clientId dans la base de donnée'.brightWhite); }).catch(err => { console.log('[' + 'ERREUR'.brightRed + '] Erreur lors de la màj de clientId dans la base de donnée: '.brightWhite + '\n'); @@ -203,14 +202,14 @@ async function initialiseDatabaseTables() { let guildId = await botSettings.findOne({ where: { name: "guildId" } }); if (guildId == null) { console.log('[' + 'INSERT'.brightMagenta + '] Insertion de guildId'.brightWhite); - let guildId = botSettings.create({ + botSettings.create({ name: "guildId", value: config.get("GUILD_ID") }); } else { - if (guildId.value != config.get("GUILD_ID")) { + if (guildId.value !== config.get("GUILD_ID")) { guildId.update({ value: config.get("GUILD_ID") }) - .then(updatedRecord => { + .then(() => { console.log('[' + 'UPDATE'.brightMagenta + '] Mise à jour du guildId dans la base de donnée'.brightWhite); }).catch(err => { console.log('[' + 'ERREUR'.brightRed + '] Erreur lors de la màj de guildId dans la base de donnée: '.brightWhite + '\n'); @@ -233,15 +232,15 @@ async function initialiseDatabaseTables() { //////////////////////////////////////////////////////////////// // Console Input/Output -var readline = require('readline'); +const readline = require('readline'); -var rl = readline.createInterface({ +const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); // Ce code est a améliorer, je l'ai vulgairement recopié d'un ancien bot (lui même pas très bien conçu) -var recursiveAsyncReadLine = function () { +const recursiveAsyncReadLine = function () { rl.question('Commande: ', function (answer) { //if (answer == 'exit') // return rl.close(); @@ -253,7 +252,7 @@ var recursiveAsyncReadLine = function () { if (!args[0] || !args[1]) console.log('\n' + '[' + 'ERREUR'.brightRed + "] Tu n'as pas mis d'arguments :p" + '\n' + '[' + 'INFO'.yellow + "] Usage: say <Numéro du canal> <\"Texte\">"); else { - var message = args[1].substring(1, args[1].length - 1); + const message = args[1].substring(1, args[1].length - 1); client.channels.cache.get(args[0]).send(message); console.log('\n' + '[' + 'SUCCES'.brightGreen + '] Le message a été envoyé dans le canal n°' + args[0]); } @@ -276,9 +275,7 @@ recursiveAsyncReadLine(); //we have to actually start our recursion somehow // BOT DISCORD //////////////////////////////////////////////////////////////// // require the needed discord.js classes -const { Client, GatewayIntentBits, MessageActionRow, MessageButton, WebhookClient } = require('discord.js'); -const { verify } = require('crypto'); - +const { Client, GatewayIntentBits, WebhookClient } = require('discord.js'); // create a new Discord client const client = new Client({ intents: [ @@ -288,34 +285,34 @@ const client = new Client({ GatewayIntentBits.DirectMessages ] }) -var mcChatWebhook, devMcChatWebhook; +let mcChatWebhook, devMcChatWebhook; client.on("ready", async function () { console.log('\n' + "SL-Projects Bot".brightCyan); console.log(""); console.log("Bot démarré".brightGreen); - var guild = client.guilds.cache.get(config.get("GUILD_ID")); - var memberCount = guild.memberCount.toLocaleString(); + const guild = client.guilds.cache.get(config.get("GUILD_ID")); + const memberCount = guild.memberCount.toLocaleString(); console.log('\n' + "Nous sommes " + memberCount + " membres."); client.user.setActivity("Regarde " + memberCount + " membres"); - checkAnniv(); + await checkAnniv(); - verifyMcChatWebhook(); + await verifyMcChatWebhook(); }); // Actions lorsqu'un membre rejoins ou part client.on('guildMemberAdd', async (member) => { let guild = client.guilds.cache.get(config.get("GUILD_ID")); - var memberCount = guild.memberCount.toLocaleString(); + const memberCount = guild.memberCount.toLocaleString(); console.log('\n' + "Nouveau membre - " + member.user.username + " - " + memberCount + " membres"); member.guild.channels.cache.get(config.get("CANAL_LOG")).send("Nouveau membre - " + member.user.username + " - " + memberCount + " membres"); client.user.setActivity("Regarde " + memberCount + " membres"); - var currentdate = new Date(); - var datetime = currentdate.getFullYear() + "-" + const currentdate = new Date(); + const datetime = currentdate.getFullYear() + "-" + (currentdate.getMonth() + 1) + "-" + currentdate.getDate() + " " + (currentdate.getHours() + 1) + ":" @@ -331,14 +328,14 @@ client.on('guildMemberAdd', async (member) => { }); client.on('guildMemberRemove', async (member) => { let guild = client.guilds.cache.get(config.get("GUILD_ID")); - var memberCount = guild.memberCount.toLocaleString(); + const memberCount = guild.memberCount.toLocaleString(); console.log('\n' + "Un membre a quitté le serveur - " + member.user.username + " - " + memberCount + " membres"); member.guild.channels.cache.get(config.get("CANAL_LOG")).send("Un membre a quitté le serveur - " + member.user.username + " - " + memberCount + " membres"); client.user.setActivity("Regarde " + memberCount + " membres"); - var currentdate = new Date(); - var datetime = currentdate.getFullYear() + "-" + const currentdate = new Date(); + const datetime = currentdate.getFullYear() + "-" + (currentdate.getMonth() + 1) + "-" + currentdate.getDate() + " " + (currentdate.getHours() + 1) + ":" @@ -356,12 +353,12 @@ client.on('guildMemberRemove', async (member) => { // Lorsqu'un message est envoyé client.on('messageCreate', async message => { // On va regarder si le message vient du canal de tchat du serveur MC - if (message.channel.id == config.get("CANAL_CHAT_MC") && !message.author.bot) { - var playerName = message.author.username; - var messageContent = message.content; + if (message.channel.id === config.get("CANAL_CHAT_MC") && !message.author.bot) { + let playerName = message.author.username; + const messageContent = message.content; // On va vérifier si l'utilisateur a associé son compte discord avec le serveur MC - var memberAccountAssoc = await minecraftPlayerSetting.findOne({ + const memberAccountAssoc = await minecraftPlayerSetting.findOne({ where: { name: 'discordAccountId', value: message.author.id @@ -382,13 +379,13 @@ client.on('messageCreate', async message => { } // On encode ça en JSON - var jsonEncodedMessage = JSON.stringify({ + const jsonEncodedMessage = JSON.stringify({ "message": messageContent, "playerName": playerName }); // Maintenant on va appeler le serveur pour envoyer le message - var xmlHttp = new XMLHttpRequest(); + const xmlHttp = new XMLHttpRequest(); xmlHttp.open("GET", "http://node.sl-projects.com:" + config.get("PORT_MSG_SRVMC") + "/discordMsg/" + encodeURIComponent(jsonEncodedMessage), true); xmlHttp.send(); } @@ -421,10 +418,10 @@ client.on('interactionCreate', async interaction => { try { memberBirthday = memberBirthday.toDate(); console.log('[' + 'INSERT'.brightMagenta + '] '.brightWhite + interaction.user.username.brightBlue + " a renseigné sa date d'anniversaire. ".brightWhite + interaction.options.getString('date').yellow); - var dd = memberBirthday.getDate(); - var mm = memberBirthday.getMonth() + 1; + let dd = memberBirthday.getDate(); + let mm = memberBirthday.getMonth() + 1; - var yyyy = memberBirthday.getFullYear(); + const yyyy = memberBirthday.getFullYear(); if (dd < 10) { dd = '0' + dd; } @@ -432,13 +429,13 @@ client.on('interactionCreate', async interaction => { mm = '0' + mm; } let birthday = mm + '/' + dd + '/' + yyyy; - let insetMemberBirthday = memberSettings.create({ + memberSettings.create({ memberId: interaction.user.id, name: "birthday", value: birthday }); await interaction.reply({ content: 'Je m\'en souviendrai. :thumbup:', ephemeral: true }); - checkAnniv(); + await checkAnniv(); } catch (error) { console.error('[' + 'ERREUR'.brightRed + '] Erreur lors de l\'insertion de la date d\'anniversaire: '.brightWhite + '\n', error); await interaction.reply("J'ai eu un petit problème pour enregistrer ta date d'anniversaire, re-essaie plus-tard. :p"); @@ -464,7 +461,7 @@ client.on('interactionCreate', async interaction => { } await interaction.reply({ content: 'La date d\'anniversaire de <@' + interaction.options.getMember('membre') + '> a été supprimée.', ephemeral: true }); - checkAnniv(); + await checkAnniv(); } else { await interaction.reply({ content: "Tu n'as pas le droit d'exécuter cette commande. :p", ephemeral: true }); } @@ -537,10 +534,9 @@ async function checkAnniv() { console.log('[' + 'INFO'.yellow + '] Vérification des anniversaires.'.brightWhite); let today = new Date(); - var dd = today.getDate(); - var mm = today.getMonth() + 1; + let dd = today.getDate(); + let mm = today.getMonth() + 1; - var yyyy = today.getFullYear(); if (dd < 10) { dd = '0' + dd; } @@ -561,13 +557,13 @@ async function checkAnniv() { const guild = client.guilds.cache.get(config.get("GUILD_ID")); //console.log(guild); - var membersWithAnnivRole = await guild.roles.cache.get(config.get("ROLE_ANNIV")).members; + const membersWithAnnivRole = await guild.roles.cache.get(config.get("ROLE_ANNIV")).members; //console.log(membersWithAnnivRole); // On va vérifier que c'est bien l'anniv des membres ayant le rôle. :p - for await (var memberWithAnnivRole of membersWithAnnivRole) { + for await (let memberWithAnnivRole of membersWithAnnivRole) { - var isMemberBirthday = false; + let isMemberBirthday = false; for await (const member of rows) { if (memberWithAnnivRole[0] === member.memberId.toString()) { isMemberBirthday = true; @@ -580,7 +576,7 @@ async function checkAnniv() { } console.log('[' + 'SUCCES'.brightGreen + '] C\'est l\'anniversaire de ' + count + ' personne(s).'); - for await (var member of rows) { + for await (const member of rows) { let memberFetch = await guild.members.fetch(member.memberId.toString()); //console.log(memberFetch); if (memberFetch) { @@ -588,7 +584,7 @@ async function checkAnniv() { if (!memberFetch.roles.cache.has(config.get("ROLE_ANNIV"))) { let annivRole = await memberFetch.guild.roles.cache.find(role => role.id === config.get("ROLE_ANNIV")); if (annivRole) { - memberFetch.roles.add(annivRole); + await memberFetch.roles.add(annivRole); console.log('[' + 'INFO'.yellow + '] Le rôle '.brightWhite + annivRole.name.yellow + " a été donné à " + memberFetch.user.username.brightBlue); client.channels.cache.get(config.get("CANAL_GENERAL")).send("Fêtons l'anniversaire de <@" + memberFetch.id + "> ! :partying_face:").catch(console.error); } @@ -612,10 +608,10 @@ async function verifyMcChatWebhook() { devMcChatWebhook = new WebhookClient({ id: devMcChatWebhookId.value, token: devMcChatWebhookToken.value }); } else { console.log("[" + 'ERREUR'.brightRed + "] Impossible de trouver le token du webhook dans la base de donnée."); - createMcChatWebhook(); + await createMcChatWebhook(); } } else { - createMcChatWebhook(); + await createMcChatWebhook(); } } @@ -658,8 +654,8 @@ async function createMcChatWebhook() { } function sendMessageFromMcChat(username, message, serverType) { - if(username == "SL-Craft"){ - if(serverType == "dev"){ + if(username === "SL-Craft"){ + if(serverType === "dev"){ devMcChatWebhook.send({ content: message, username: username, @@ -680,20 +676,20 @@ function sendMessageFromMcChat(username, message, serverType) { message = message.replace("@here", "**here**"); // On va regarder si le joueur souhaite tagger quelqu'un avec un @ - var regex = /@(.*?\s)/g; - var match = regex.exec(message); + const regex = /@(.*?\s)/g; + const match = regex.exec(message); if (match){ // console.log("ça a matché"); - var member = match[1].trim(); + const member = match[1].trim(); // console.log(member+"flag"); - var memberFetch = client.users.cache.find(user => user.username == member).id; + const memberFetch = client.users.cache.find(user => user.username === member).id; if (memberFetch){ // console.log("Le membre existe"); message = message.replace("@"+member, "<@" + memberFetch + ">"); } } - if(serverType == "dev"){ + if(serverType === "dev"){ devMcChatWebhook.send({ content: message, username: username, @@ -709,14 +705,10 @@ function sendMessageFromMcChat(username, message, serverType) { } } - - -const job = schedule.scheduleJob('0 0 * * *', function () { +schedule.scheduleJob('0 0 * * *', function () { console.log('[' + 'INFO'.yellow + '] Éxecution des tâches de fonds quotidiennes...'.brightWhite); checkAnniv(); }); - - // login to Discord with your app's token client.login(config.get("DISCORD_BOT_TOKEN")); @@ -730,11 +722,11 @@ app.get('/ping', (req, res) => { res.send("Pong!") }) app.get('/channels/:id', (req, res) => { - var id = req.params.id; + const id = req.params.id; res.send(client.channels.cache.get(id)); }) app.get('/mc/chat/:detail', (req, res) => { - var detail = JSON.parse(decodeURI(req.params.detail)); + const detail = JSON.parse(decodeURI(req.params.detail)); sendMessageFromMcChat(detail.username, detail.message, req.headers['server-type']); res.send("Envoyé!") })