jensie1996

Tempmute json controles

Nov 27th, 2021 (edited)
764
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. tempMute.js;
  2.  
  3. // Ophalen van het bestand
  4. const fs = require("fs");
  5. const tempMute = JSON.parse(fs.readFileSync("./tempMutes.json", "utf8"));
  6.  
  7. // We gaan nakijken als de persoon NIET voorkomt in het json bestand.
  8. // Als deze niet voorkomt in het bestand gaan we een object aanmaken van het ID
  9. // van de persoon met de property time die op 0 wordt gezet.
  10. if (!tempMute[mutePerson]) tempMute[mutePerson] = {
  11.     time: 0
  12. };
  13.  
  14. // We gaan de tijd van nu ophalen en daar onze tijd bijtellen (Milliseconden).
  15. let date = new Date();
  16. let dateMilli = date.getTime();
  17. let dateAdded = dateMilli + ms(muteTime);
  18.  
  19. // We voegen de tijd toe aan die persoon.
  20. tempMute[mutePerson].time = dateAdded;
  21.  
  22. // Als laatste gaan we het opslaan in het document.
  23. fs.writeFile("./tempMutes.json", JSON.stringify(tempMute), (err) => {
  24.     if (err) console.log(err);
  25. });
  26.  
  27. ----------
  28.  
  29. unMute.js:
  30.  
  31. // Ophalen van het bestand
  32. const fs = require("fs");
  33. const tempMute = JSON.parse(fs.readFileSync("./tempMutes.json", "utf8"));
  34.  
  35. // We gaan de tijd van die persoon op 0 zetten.
  36. // Dit hebben we later nodig voor extra controles.
  37. tempMute[mutePerson].time = 0;
  38.  
  39. // Als laatste gaan we het opslaan in het document.
  40. fs.writeFile("./tempMutes.json", JSON.stringify(tempMute), (err) => {
  41.     if (err) console.log(err);
  42. });
  43.  
  44. ----------
  45.  
  46. index.js:
  47.  
  48. // Bestand ophalen
  49. const tempMute = JSON.parse(fs.readFileSync("./tempMutes.json", "utf8"));
  50.  
  51. // LET OP dat Intents.FLAGS.GUILD_PRESENCES mee in je "new Client" zit.
  52. // LET OOK op dat je in discord developer portal alles van PRESENCE hebt aanstaan!!
  53.  
  54. // BIJ client.once("ready", () => {
  55. // Zorg ervoor dat je bij je Intents Intents.FLAGS.GUILD_PRESENCES toevoegt en dat je in de dev portal
  56. // bij de bot alles van intents aan hebt staan.
  57. const checkTempMute = async () => {
  58.  
  59.     // Omdat we over object propertys gaan moeten we dit anders doen dan een array.
  60.     // We gaan hier over iedere key in het object gaan in het tempMutes.json bestand.
  61.     for (const result of Object.keys(tempMute)) {
  62.         // We halen het ID er uit.
  63.         const idMember = result;
  64.         // We halen de tijd op vanuit het hele bestand bij die key (ID) en dan de tijd.
  65.         const time = tempMute[result].time;
  66.  
  67.         // Tijd van nu ophalen.
  68.         let date = new Date();
  69.         let dateMilli = date.getTime();
  70.         // Tijd bij gebruiker omvormen naar leesbare tijd.
  71.         let dateReset = new Date(time);
  72.  
  73.         // Als de tijd van het muten kleiner is als de tijd van nu en de tijd staat niet op 0
  74.         // dan mag deze persoon verlost worden van het zwijgen.
  75.         if (dateReset < dateMilli && time != 0) {
  76.  
  77.             try {
  78.                 // We halen de server op.
  79.                 let guild = await client.guilds.fetch("ID");
  80.                 // We gaan de persoon gegevens ophalen aan de hand van de idMember waar we de tekens < @ ! > weghalen.
  81.                 const mutePerson = guild.members.cache.find(member => member.id === idMember.replace(/[<@!>]/g, ''));
  82.                 // We halen de rol op.
  83.                 let muteRole = guild.roles.cache.get('ID');
  84.                 // We kijken na als de rol bestaat.
  85.                 if (!muteRole) return console.log("De rol muted bestaat niet.");
  86.                 // We verwijderen de rol van de persoon.
  87.                 await (mutePerson.roles.remove(muteRole.id));
  88.                 // We zetten de tijd op 0.
  89.                 tempMute[mutePerson].time = 0;
  90.                 // We slaan dit mee op in het document.
  91.                 fs.writeFile("./tempMutes.json", JSON.stringify(tempMute), (err) => {
  92.                     if (err) console.log(err);
  93.                 });
  94.             }
  95.             catch (err) {
  96.                 console.log(err + " Persoon kon niet geunmute worden wegens deze persoon niet meer op de server is");
  97.             }
  98.         }
  99.     }
  100.     setTimeout(checkTempMute, 1000 * 60); // We zetten een timeout van 1 minuut.
  101. }
  102. checkTempMute(); // We starten de functie met de timeout.
  103.  
  104. BIJ client.on("guildMemberAdd"
  105.  // Omdat we over object propertys gaan moeten we dit anders doen dan een array.
  106. for (const result of Object.keys(tempMute)) {
  107.     // Voor meer uitleg zie vorig stuk.
  108.     const idMember = result;
  109.     const time = tempMute[result].time;
  110.  
  111.     // We kijken na als het de persoon is die op de server is gekomen.
  112.     if (idMember.replace(/[<@!>]/g, '') == member.id) {
  113.  
  114.         let date = new Date();
  115.         let dateMilli = date.getTime();
  116.         let dateReset = new Date(time);
  117.  
  118.         let muteRole = member.guild.roles.cache.get('ID');
  119.  
  120.         if (!muteRole) return message.channel.send("De rol muted bestaat niet");
  121.  
  122.         try {
  123.             // Als de tijd van de mute nog groter is dan de tijd van nu moet die de rol terug krijgen.
  124.             if (dateReset > dateMilli) {
  125.                 await (member.roles.add(muteRole.id));
  126.             } else if (time != 0) {
  127.                 // Anders mag de rol weg maar omdat deze opnieuw aanmeld is deze al weg en gaan we enkel
  128.                 // de tijd op nul zetten zodat we niet nog eens moeten opslaan.
  129.                 let guild = await client.guilds.fetch("ID");
  130.                 const mutePerson = guild.members.cache.find(member => member.id === idMember.replace(/[<@!>]/g, ''));
  131.                 tempMute[mutePerson].time = 0;
  132.  
  133.                 fs.writeFile("./tempMutes.json", JSON.stringify(tempMute), (err) => {
  134.                     if (err) console.log(err);
  135.                 });
  136.             }
  137.         } catch (err) {
  138.             console.log(err + " Iets liep mis met de rollen toevoegen/verwijderen.");
  139.         }
  140.     }
  141. }
RAW Paste Data