const fs = require('fs'); const path = require('path'); const { client, logch } = require("../index.js"); module.exports = { name: 'message', description: "Permet d'envoyer des messages avec le bot", execute(message, args) { // Prompt help if (!args[0] || args[0] == "help" || args[0] == "h") { message.channel.send(` Aide à propos de \`.message\` : Pour utiliser la commande il vous suffit d'utiliser un des arguments suivants : > list *liste l'ensemble des messages envoyés par le bot en indiquant l'ID du message* > send ChannelID/nomDuChannel le message que vous souhaitez envoyer > edit MessageID (trouvable grâce à l'argument list) nouveau contenu du message > add MessageID 🙂 @Role *ajoute la réaction 🙂 en dessous du message et donne le @Role à ceux qui cliquent dessus* > rem MessageID 🙂 *supprime la réaction 🙂 en dessous du message* > delete MessageID *supprime le message choisi (IRREVERSIBLE)*`); } // list messages else if (args[0] == "list") { const listMsg = fs.readdirSync(`./data/messages/`).filter(file => file.endsWith('.json')); console.log(listMsg); if (listMsg.length == 0) { console.log("pas de messages envoyés"); return message.channel.send("Aucun message n'a été envoyé via le bot"); } nbMessages = 0; messagetosend = "Liste des messages envoyés via le bot :\n"; for (const msg of listMsg) { if (messagetosend.length >= 1400) { message.channel.send(messagetosend); messagetosend = ""; } msgFileContent = JSON.parse(fs.readFileSync(path.resolve(`./data/messages/${msg}`))); if (!msgFileContent.deleted) { nbMessages += 1; messagetosend += ` - ${msgFileContent.id} dans <#${msgFileContent.channelid}> : *"${msgFileContent.content.slice(0, 30)}..."*\n` } } messagetosend += `${nbMessages} message(s) ont été envoyés via le bot` message.channel.send(messagetosend) } // send message else if (args[0] == "send") { if (!args[2]) return message.channel.send("Merci de vérifier d'entrer un channel et un message à envoyer (.message help)") // Check if this channel exists channeltosendname = message.guild.channels.cache.find(channel => channel.name.toLowerCase() == args[1]) channeltosendid = client.channels.cache.get(args[1]); if (channeltosendname) { channeltosend = channeltosendname; } else if (channeltosendid) { channeltosend = channeltosendid; } else return message.channel.send("Merci de vérifier d'avoir entré un nom de channel (ou ID) valide") actualtimestamp = + new Date(); args.splice(0, 2); messagecontent = args.join(" "); channeltosend.send(messagecontent).then(sent => { messageinfo = { id: `${sent.channel.id}o${sent.id}`, deleted: false, channelid: sent.channel.id, content: messagecontent, created: actualtimestamp, lastChange: actualtimestamp, reactnumber: 0 } const jsonStringmsg = JSON.stringify(messageinfo); fs.writeFile(`./data/messages/${sent.channel.id}o${sent.id}.json`, jsonStringmsg, err => { if (err) { console.log(`Error writing message`, err) } else { console.log(`Successfully wrote message`) } }); message.react("✅"); message.channel.send("Message envoyé.") }); } // edit message else if (args[0] == "edit") { if (!args[2]) return message.channel.send("Merci de vérifier d'entrer un id de message correct et un nouveau message(.message help)"); try { idChMsg = args[1].split(/\o+/); argsmessage = args.slice(0); argsmessage.splice(0, 2); newcontent = argsmessage.join(" "); client.channels.cache.get(idChMsg[0]).messages.fetch(idChMsg[1]).then(msg => msg.edit(newcontent)); // update message file updatemsg = JSON.parse(fs.readFileSync(path.resolve(`./data/messages/${args[1]}.json`))); actualtimestamp = + new Date(); updatemsg.content = newcontent; updatemsg.lastChange = actualtimestamp; const jsonStringmsg = JSON.stringify(updatemsg); fs.writeFile(`./data/messages/${args[1]}.json`, jsonStringmsg, err => { if (err) { console.log(`Error writing message`, err) } else { console.log(`Successfully wrote message`) } }) message.react("✅"); message.channel.send("Message modifié.") } catch (err) { console.error(err); return message.channel.send("Merci de vérifier d'entrer un id de message correct (.message list)"); } } // delete message else if (args[0] == "delete" || args[0] == "del") { if (!args[1]) return message.channel.send("Merci de vérifier d'entrer un id de message correct (.message help)"); try { idChMsg = args[1].split(/\o+/); client.channels.cache.get(idChMsg[0]).messages.fetch(idChMsg[1]).then(msg => msg.delete()); // update message file updatemsg = JSON.parse(fs.readFileSync(path.resolve(`./data/messages/${args[1]}.json`))); updatemsg.deleted = true; actualtimestamp = + new Date(); updatemsg.lastChange = actualtimestamp; const jsonStringmsg = JSON.stringify(updatemsg); fs.writeFile(`./data/messages/${args[1]}.json`, jsonStringmsg, err => { if (err) { console.log(`Error writing message`, err) } else { console.log(`Successfully wrote message`) } }) message.react("✅"); message.channel.send("Message supprimé.") } catch (err) { console.error(err); return message.channel.send("Merci de vérifier d'entrer un id de message correct (.message list)"); } } // add reaction else if (args[0] == "add") { if (!args[2]) return message.channel.send("Merci de mettre une emote valide"); try { idChMsg = args[1].split(/\o+/); client.channels.cache.get(idChMsg[0]).messages.fetch(idChMsg[1]).then(msg => msg.react(args[2])); // update message file updatemsg = JSON.parse(fs.readFileSync(path.resolve(`./data/messages/${args[1]}.json`))); updatemsg.reactnumber += 1; eval(`updatemsg.emoj${updatemsg.reactnumber} = args[2];`); if (args[3] && args[3].length > 0) { roleID = args[3].replace('<@&', '').replace('>', ''); rolefound = message.guild.roles.cache.find(r => r.id == roleID); if (rolefound) { eval(`updatemsg.action${updatemsg.reactnumber} = roleID;`); } else { message.channel.send("Ceci n'est pas un rôle, l'emoj n'a donc été associé à aucun rôle"); eval(`updatemsg.action${updatemsg.reactnumber} = "none";`); } } else { message.channel.send("Vous n'avez pas précisé de rôle, l'emoj n'a donc été associé à aucun rôle"); eval(`updatemsg.action${updatemsg.reactnumber} = "none";`); } actualtimestamp = + new Date(); updatemsg.lastChange = actualtimestamp; const jsonStringmsg = JSON.stringify(updatemsg); fs.writeFile(`./data/messages/${args[1]}.json`, jsonStringmsg, err => { if (err) { console.log(`Error writing message`, err) } else { console.log(`Successfully wrote message`) } }) message.react("✅"); message.channel.send("Réaction ajoutée.") } catch (err) { console.error(err); return message.channel.send("Merci de vérifier d'entrer un id de message correct (.message list) et/ou une emote valide"); } } // remove reaction else if (args[0] == "rem") { if (!args[2]) return message.channel.send("Merci de mettre une emote valide"); try { idChMsg = args[1].split(/\o+/); client.channels.cache.get(idChMsg[0]).messages.fetch(idChMsg[1]).then(msg => msg.reactions.cache.find(reaction => reaction.emoji.name == args[2]).remove()); // update message file updatemsg = JSON.parse(fs.readFileSync(path.resolve(`./data/messages/${args[1]}.json`))); for (let index = 1; index < updatemsg.reactnumber + 1; index++) { eval(`if (updatemsg.emoj${index} == args[2]) updatemsg.emoj${index} = "Deleted"`); } actualtimestamp = + new Date(); updatemsg.lastChange = actualtimestamp; const jsonStringmsg = JSON.stringify(updatemsg); fs.writeFile(`./data/messages/${args[1]}.json`, jsonStringmsg, err => { if (err) { console.log(`Error writing message`, err) } else { console.log(`Successfully wrote message`) } }) message.react("✅"); message.channel.send("Réaction supprimée.") } catch (err) { console.error(err); return message.channel.send("Merci de vérifier d'entrer un id de message correct (.message list) et/ou une emote valide"); } } } }