219 lines
No EOL
10 KiB
JavaScript
219 lines
No EOL
10 KiB
JavaScript
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");
|
|
}
|
|
}
|
|
}
|
|
} |