Advertisement
Jordimario

NodeJs Processi a competenza

Oct 30th, 2019
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const Discord = require("discord.js");
  2. var fs=require("fs");
  3. const https = require('https');
  4. const client = new Discord.Client();
  5. const config = require("../config.json");
  6.  
  7. async function loadJSON(){
  8. //la funzione ritorna una promessa
  9. return new Promise((resolve, reject) => {
  10.        
  11.          fs.readFile('variabili.json','utf8', (err,data) => {resolve(JSON.parse(data.match(/{"persone":\d+,"process":(true|false)}/gi)))})//risolvera una lettura per un file e lo trasformera in un oggetto
  12.          
  13.     })
  14.  
  15. }
  16.  
  17. async function postJSON(jsonData){
  18. //la funzione non ritorna nulla ma aggiorna il json variabile
  19.    await fs.writeFile("variabili.json",JSON.stringify(jsonData), err => {//funzione per aggiornare il file
  20.         if(err) return console.log(err);
  21.     })
  22.  
  23. }
  24.  
  25.  
  26. client.on("ready", guild => {
  27.           console.log(`processo1 inizializzato in ${client.guilds.size} gilde`)
  28.  
  29.  
  30. });
  31.  
  32. client.on("message", async message => {
  33.  
  34.   if(message.author.bot) return; //non acetta messaggi inviati dai bot
  35.   if(message.content.indexOf(config.prefix) !== 0) return; //accetta solo messaggi il prfisso posto in config
  36.  
  37.   var args = message.content.slice(config.prefix.length).trim().split(/ +/g);
  38.   var command = args.shift().toLowerCase();
  39.  
  40.  
  41. if(command==="inizia"){
  42. message.channel.send("Processo **2** iniziato")//indica l'inizio del primo processo
  43.  
  44. pro=setInterval(async ()=>{
  45. //inizio ciclo
  46. variabili = await loadJSON();//prende il file delle variabili come oggetto
  47.    
  48. if(variabili.persone>0){
  49.     if(variabili.process){//controllo se è aperto il canale
  50.     variabili.process=false //chiusura sezione critica
  51.     await postJSON(variabili) //aspetto che mi aggiorni il json
  52. console.log(JSON.stringify(variabili))
  53.  
  54.             variabili.persone--//leva un biglietto
  55.    
  56.             //await postJSON(variabili) //aspetto che mi aggiorni il json
  57.             message.channel.send("**P2:** biglietti rimanenti: "+variabili.persone);
  58.             variabili.process=true //apertura sezione critica
  59.  
  60.             postJSON(variabili) //apporto le modifiche in modo permanenete
  61.     }
  62.     return 0;
  63. }
  64. else{
  65.     console.log("stop!");
  66.     message.channel.send("il processo è finito");
  67.     return clearInterval(pro);
  68. }
  69.    
  70. },1000)  
  71. }
  72.                                       });
  73. client.login(config.token);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement