gaber-elsayed

timedannoucement

Mar 22nd, 2021
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.34 KB | None | 0 0
  1. const Discord = require('discord.js');
  2.  
  3. const client = new Discord.Client();
  4. const PREFIX = '!msg ';
  5. var flipflop;
  6.  
  7. var tableauMessageMemberId = [];
  8. var tableauChannel = [];
  9. var tableauStep = [];
  10. var tableauTitle = [];
  11. var tableauDescription = [];
  12. var tableauTimeCode = [];
  13. var tableauFooter = [];
  14. var tableauColor = [];
  15. var tableauImage = [];
  16. var tableauThumbnail = [];
  17. var tableauUrl = [];
  18. var tableauToken = [];
  19.  
  20. client.on('ready', () => {
  21. console.log("Bot online");
  22.  
  23. /*const embed = new Discord.MessageEmbed()
  24. .setTitle("titre")
  25. .setDescription("description")
  26. .setImage("https://lh3.googleusercontent.com/proxy/ZxjUk1LTb67n7Coi2RkwIACfBs6DhU5IRuBJynxV2n5ZIS-PC2cy8PYTC5ZejChFFytYt3gUPFdKf3dziDuXlrffc54deZEUN3xDiORfNFoATv8I")
  27. .setThumbnail("https://upload.wikimedia.org/wikipedia/fr/thumb/0/05/Discord.svg/1200px-Discord.svg.png")
  28. client.channels.cache.get('626781840765747201').send(embed);*/
  29.  
  30. setInterval(interval, 3000);
  31. function interval(){
  32. if(flipflop === 0){
  33. flipflop = 1;
  34. client.user.setActivity("Made by Axel ROGET");
  35. } else {
  36. flipflop = 0;
  37. client.user.setActivity("!msg help");
  38. }
  39.  
  40. const date = new Date();
  41. var timeCode = ("0"+date.getDate()).slice(-2) +"/"+("0"+(date.getMonth()+1)).slice(-2) + "/" + ("0"+(date.getHours()+2)).slice(-2) + "/" + ("0"+date.getMinutes()).slice(-2);
  42. //var timeCode = ("0"+date.getMinutes()).slice(-2) +"/"+ ("0"+(date.getHours()+1)).slice(-2) +"/"+ ("0"+date.getDate()).slice(-2) +"/"+ ("0"+(date.getMonth()+1)).slice(-2);
  43. console.log(timeCode);
  44.  
  45. if(tableauTimeCode.indexOf(timeCode) !== -1){ // si il y a quelque chose à annoncer :
  46. console.log("Annonce !");
  47.  
  48. var index = tableauTimeCode.indexOf(timeCode);
  49.  
  50. const embed = new Discord.MessageEmbed()
  51. .setTitle(tableauTitle[index])
  52. .setDescription(tableauDescription[index])
  53. .setImage(tableauImage[index])
  54. .setThumbnail(tableauThumbnail[index])
  55. .setColor(tableauColor[index])
  56. .setURL(tableauUrl[index])
  57. if(tableauFooter[index]){
  58. embed.setFooter(tableauFooter[index] + "\n\nMade by Axel ROGET :\nhttps://instagram.com/axel_roget")
  59. } else {
  60. embed.setFooter("Made by Axel ROGET :\nhttps://instagram.com/axel_roget")
  61. }
  62. client.channels.cache.get(tableauChannel[index]).send(embed);
  63. tableauTimeCode[index] = "avowed";
  64. }
  65. }
  66. });
  67.  
  68.  
  69. client.on('message', message =>{
  70. let args = message.content.substring(PREFIX.length).split(" ");
  71. switch(args[0]){
  72. case 'help':
  73. const embed = new Discord.MessageEmbed()
  74. .setTitle("Messages programmés :")
  75. .setDescription("**!msg add [#channel]** pour ajouter un message programmé (le reste du paramétrage se fera en message privé)\n\n**!msg edit [code unique]** pour modifier un message programmé déjà existant.")
  76. .setColor('#fb6615')
  77. .setFooter("Permission \"gérer les messages\" requise")
  78. message.channel.send(embed);
  79. break;
  80.  
  81. case 'add':
  82. console.log("Add");
  83. if(message.channel.type === 'text' && message.member.permissions.has("MANAGE_MESSAGES") && args[1] && client.channels.cache.has(args[1].substring(2).slice(0, -1))){
  84. message.channel.bulkDelete(1);
  85. const embed = new Discord.MessageEmbed()
  86. .setTitle("Création d'un message programmé :")
  87. .setDescription("Nous avons presque fini de créer votre message mais il nous manque quelques informations :\n**Commencez par donner un titre à votre annonce...**")
  88. .setColor('#fb6615')
  89. message.member.send(embed);
  90.  
  91. console.log("MemberID = " + message.member.id);
  92. tableauMessageMemberId.push(message.member.id);
  93. console.log("Tableau memberId : " + tableauMessageMemberId);
  94. tableauChannel[tableauMessageMemberId.indexOf(message.member.id)] = args[1].substring(2).slice(0, -1);
  95. console.log("tableauChannel : " + tableauChannel);
  96. tableauStep[tableauMessageMemberId.indexOf(message.member.id)] = 1;
  97. console.log("tableauStep : " + tableauStep);
  98. } else { // erreur lors de la création de l'annonce
  99. const embedError = new Discord.MessageEmbed()
  100. .setTitle("Erreur lors de la création de l'annonce :")
  101. .setDescription("L'erreur peut provenir :\n\n-Du manque de la permission nécessaire.\n\n-La commande n'a pas été effectuée dans un serveur.\n\n-Il manque un ou plusieurs arguments.\n\n-Le channel sélectionné n'est pas un channel valide.")
  102. .setFooter("!msg add [channel]")
  103. .setColor("#ff0000")
  104. message.channel.send(embedError);
  105. }
  106. break;
  107.  
  108. case 'edit':
  109. if(tableauToken.indexOf(args[1]) !== -1){
  110. var index = tableauToken.indexOf(args[1]);
  111. tableauStep[index] = 4;
  112. tableauMessageMemberId[index] = message.author.id;
  113.  
  114. if(message.channel.type === 'text'){message.channel.bulkDelete(1);}
  115.  
  116. const embed = new Discord.MessageEmbed()
  117. .setTitle("Modification du message :")
  118. .setDescription("Vous pouvez utiliser :\n\n**finish** pour sauvegarder.\n\n**preview** pour visualiser l'annonce.\n\n**date** pour modifier la date et l'heure de publication de l'annonce.\n\n**footer [texte]** pour ajouter un pied de page.\n\n**color [couleur]** pour personnaliser la couleur de l'annonce. Choix possibles : [rouge], [orange] et [vert] sinon utiliser une couleur hexadécimale.\n\n**image [URL de l'image]** pour ajouter une image en dessous de l'annonce.\n\n**thumbnail [URL de l'image]** pour ajouter une image en haut à droite.\n\n**url [URL]** pour ajouter un lien. Cela rendra le titre cliquable.\n\n**cancel** pour annuler l'annonce. Cette action est irréversible.")
  119. .setColor('#57ad44')
  120. if(message.channel.type === 'text'){message.member.send(embed);} else {message.reply(embed);}
  121.  
  122. } else {
  123. const embed = new Discord.MessageEmbed()
  124. .setTitle("Erreur !")
  125. .setDescription("Veuillez inclure un code valide.")
  126. .setFooter("!msg edit [code unique]")
  127. .setColor('#ff0000')
  128. message.channel.send(embed);
  129. }
  130. return;
  131. }
  132.  
  133. if(message.channel.type === 'dm' && tableauMessageMemberId.indexOf(message.author.id) !== -1 ){
  134. var step = tableauStep[tableauMessageMemberId.indexOf(message.author.id)];
  135.  
  136. var index = tableauMessageMemberId.indexOf(message.author.id); // get index
  137.  
  138. console.log("Step : " + step);
  139.  
  140. if(step === 1){ // 1èere étape
  141. tableauTitle[index] = message.content;
  142. console.log("TableauTitle : " + tableauTitle);
  143. console.log("Id du channel dans lequel il faut envoyer le msg : " + tableauChannel[index]);
  144. tableauStep[index] = 2;
  145. const embed = new Discord.MessageEmbed()
  146. .setTitle("Création d'un message programmé :")
  147. .setDescription("Parfait, le titre de l'annonce est __" + message.content + "__.\n**Choisissez maintenant le corps de l'annonce...**")
  148. .setColor('#fb6615')
  149. .setFooter("Utilisez \\n pour passer à la ligne (fonctionnalité pas encore disponible)")
  150. message.channel.send(embed);
  151.  
  152. } else if(step === 2){ // 2ème étape
  153. tableauStep[index] = 3;
  154. tableauDescription[index] = message.content;
  155.  
  156. const embed = new Discord.MessageEmbed()
  157. .setTitle("Création d'un message programmé :")
  158. .setDescription("Excellent, la description de l'annonce est __" + message.content + "__.\nPassons au moment de publication de l'annonce :\nSélectionnez maintenant une date et une heure de publication.")
  159. .setFooter("Veuillez respecter la forme suivante : (sans crochets)\n[jour] [mois] [heure] [minute]\nChaque argument doit être en 2 chiffres.\nPar exemple : 5 heures >>> 05\n\nVous pouvez aussi utiliser __**now**__ au lieu de la commande pour publier le message dès l'utilisation de **finish**")
  160. .setColor('#fb6615')
  161. message.channel.send(embed);
  162. } else if(step === 3){ // 3ème étape
  163. let args = message.content.split(" ");
  164.  
  165. console.log(args[3]);
  166. if(args[3]){
  167. tableauStep[index] = 4;
  168. tableauTimeCode[index] = args[0]+"/"+args[1]+"/"+args[2]+"/"+args[3]; // tableauTimeCode
  169. console.log("tableauTimeCode : " + tableauTimeCode); // dev only
  170.  
  171. const embed = new Discord.MessageEmbed() // Embed pour les options facultative
  172. .setTitle("Quelques finitions :")
  173. .setDescription("Votre message est finit ! Utilisez les fonctions pour aller plus loin :\n\n**finish** pour sauvegarder.\n\n**preview** pour visualiser l'annonce.\n\n**date** pour modifier la date et l'heure de publication de l'annonce.\n\n**footer [texte]** pour ajouter un pied de page.\n\n**color [couleur]** pour personnaliser la couleur de l'annonce. Choix possibles : [rouge], [orange] et [vert] sinon utiliser une couleur hexadécimale.\n\n**image [URL de l'image]** pour ajouter une image en dessous de l'annonce.\n\n**thumbnail [URL de l'image]** pour ajouter une image en haut à droite.\n\n**url [URL]** pour ajouter un lien. Cela rendra le titre cliquable.\n\n**cancel** pour annuler l'annonce. Cette action est irréversible.")
  174. .setColor('#57ad44')
  175. message.channel.send(embed);
  176.  
  177. } else if(message.content === "now"){ // Utilisation de "now"
  178. tableauStep[index] = 4;
  179. tableauTimeCode[index] = 'now';
  180. console.log("NOW");
  181.  
  182. const embed = new Discord.MessageEmbed() // Embed pour les options facultative + NOW
  183. .setTitle("Quelques finitions :")
  184. .setDescription("Votre message est finit ! Utilisez les fonctions pour aller plus loin :\n\n**finish** pour sauvegarder.\n\n**preview** pour visualiser l'annonce.\n\n**date** pour modifier la date et l'heure de publication de l'annonce.\n\n**footer [texte]** pour ajouter un pied de page.\n\n**color [couleur]** pour personnaliser la couleur de l'annonce. Choix possibles : [rouge], [orange] et [vert] sinon utiliser une couleur hexadécimale.\n\n**image [URL de l'image]** pour ajouter une image en dessous de l'annonce.\n\n**thumbnail [URL de l'image]** pour ajouter une image en haut à droite.\n\n**url [URL]** pour ajouter un lien. Cela rendra le titre cliquable.\n\n**cancel** pour annuler l'annonce. Cette action est irréversible.")
  185. .setColor('#57ad44')
  186. message.channel.send(embed);
  187. } else {
  188. const embed = new Discord.MessageEmbed() // embed pour signaler l'erreur
  189. .setTitle("Erreur !")
  190. .setDescription("Un problème est survenue lors de la création du message programmé.\nVeuillez réessayer")
  191. .setColor("#ff0000")
  192. .setDescription("Veuillez respecter la forme suivante : (sans crochets)\n[jour] [mois] [heure] [minute]")
  193. message.channel.send(embed);
  194. }
  195.  
  196.  
  197. } else if(step = 4){
  198. console.log("Step : 4");
  199. let args = message.content.split(" ");
  200. console.log(args);
  201.  
  202. switch (args[0]){
  203.  
  204. case 'finish':
  205. tableauMessageMemberId[index] = "finish";
  206.  
  207. if(tableauTimeCode[index] !== 'now'){ // TimeCode normal
  208.  
  209. tableauToken[index] = Math.random().toString().substring(2);
  210.  
  211. const embed = new Discord.MessageEmbed()
  212. .setTitle("C'est fini !")
  213. .setDescription("Et voilà, vous avez fini de configurer votre message !\nSachez que vous pouvezle modifier grâce au code suivant :** " + tableauToken[index] + "**.\n\nPour le modifier, il vous suffit d'utiliser la commande __**!msg edit [code unique]**__")
  214. .setColor('#57ad44')
  215. message.channel.send(embed);
  216.  
  217. } else { // Utilisation de Now : envoie du message
  218. message.channel.send("```Envoie du message en cours...```");
  219.  
  220. const embed = new Discord.MessageEmbed()
  221. .setTitle(tableauTitle[index])
  222. .setDescription(tableauDescription[index])
  223. .setImage(tableauImage[index])
  224. .setThumbnail(tableauThumbnail[index])
  225. .setColor(tableauColor[index])
  226. .setURL(tableauUrl[index])
  227. if(tableauFooter[index]){
  228. embed.setFooter(tableauFooter[index] + "\n\nMade by Axel ROGET :\nhttps://instagram.com/axel_roget")
  229. } else {
  230. embed.setFooter("Made by Axel ROGET :\nhttps://instagram.com/axel_roget")
  231. }
  232. client.channels.cache.get(tableauChannel[index]).send(embed);
  233. tableauTimeCode[index] = "avowed";
  234.  
  235. }
  236. break;
  237.  
  238. case 'footer':
  239. console.log("Footer = " + message.content.substring(7));
  240. tableauFooter[index] = message.content.substring(7);
  241. message.reply("```Pied de page ajouté avec succès !```")
  242. break;
  243.  
  244. case 'color':
  245. console.log("Color = " + args[1]);
  246.  
  247. if(args[1] === 'rouge'){ // couleur rouge
  248. console.log("Couleur par défaut : rouge");
  249. tableauColor[index] = '#ff0000';
  250. } else if(args[1] === 'orange'){
  251. console.log("Couleur par défaut : orange");
  252. tableauColor[index] = '#fb6615';
  253. } else if(args[1] === 'vert'){
  254. console.log("Couleur par défaut : vert");
  255. tableauColor[index] = '#57ad44';
  256. } else {
  257. console.log("Couleur custom");
  258. tableauColor[index] = args[1];
  259. }
  260. message.reply("```Couleur ajouté avec succès !```");
  261. break;
  262.  
  263. case 'image':
  264. tableauImage[index] = args[1];
  265. message.reply("```Image ajouté avec succès !```");
  266. break;
  267.  
  268. case 'thumbnail':
  269. tableauThumbnail[index] = args[1];
  270. message.reply("```Image ajouté avec succès !```");
  271. break;
  272.  
  273. case 'url':
  274. tableauUrl[index] = args[1];
  275. message.reply("```URL ajouté avec succès !```");
  276. break;
  277.  
  278. case 'preview':
  279. const embed2 = new Discord.MessageEmbed()
  280. .setTitle(tableauTitle[index])
  281. .setDescription(tableauDescription[index])
  282. .setImage(tableauImage[index])
  283. .setThumbnail(tableauThumbnail[index])
  284. .setColor(tableauColor[index])
  285. .setURL(tableauUrl[index])
  286. if(tableauFooter[index]){
  287. embed2.setFooter(tableauFooter[index] + "\n\nMade by Axel ROGET :\nhttps://instagram.com/axel_roget")
  288. } else {
  289. embed2.setFooter("Made by Axel ROGET :\nhttps://instagram.com/axel_roget")
  290. }
  291. message.channel.send(embed2)
  292. break;
  293.  
  294. case 'date':
  295. const embed3 = new Discord.MessageEmbed()
  296. .setTitle("Modification de la date :")
  297. .setDescription("D'accord, modifions l'heure.")
  298. .setFooter("Veuillez respecter la forme suivante : (sans crochets)\n[jour] [mois] [heure] [minute]\nChaque argument doit être en 2 chiffres.\nPar exemple : 5 heures >>> 05")
  299. .setColor('#57ad44')
  300. message.channel.send(embed3);
  301. tableauStep[index] = 3;
  302. break;
  303.  
  304. case 'cancel':
  305. tableauTimeCode[index] = 'Cancelled';
  306. message.channel.send("```Message supprimé avec succès```");
  307. break;
  308.  
  309. default:
  310. const embedError = new Discord.MessageEmbed()
  311. .setTitle("Erreur avec le premier argument :")
  312. .setDescription("**__" + args[0] + "__** n'est pas un argument valide.\nVoici les arguments valides :\n\n**finish** pour sauvegarder.\n\n**preview** pour visualiser l'annonce.\n\n**date** pour modifier la date et l'heure de publication de l'annonce.\n\n**footer [texte]** pour ajouter un pied de page.\n\n**color [couleur]** pour personnaliser la couleur de l'annonce. Choix possibles : [rouge], [orange] et [vert] sinon utiliser une couleur hexadécimale.\n\n**image [URL de l'image]** pour ajouter une image en dessous de l'annonce.\n\n**thumbnail [URL de l'image]** pour ajouter une image en haut à droite.\n\n**url [URL]** pour ajouter un lien. Cela rendra le titre cliquable.\n\n**cancel** pour annuler l'annonce. Cette action est irréversible.")
  313. .setColor('#ff0000')
  314. message.channel.send(embedError);
  315.  
  316. }
  317.  
  318. }
  319.  
  320.  
  321.  
  322.  
  323. }
  324.  
  325. args = [];
  326.  
  327. });
  328. client.login(process.env.TOKEN);
Advertisement
Add Comment
Please, Sign In to add comment