Partage
  • Partager sur Facebook
  • Partager sur Twitter

écrire du json avec discord.js

    15 juin 2021 à 22:17:57

    En ce moment sur mon bot discord je fais un système d'easteregg et je suis en train de créer un script qui permet au membre de pouvoir créer un easteregg qui sera stocké dans un fichier .json comme tout les autres MAIS je n'arrive pas à rajouter l'easteregg dans le json sans que ça supprime tout le contenu du fichier. Comment je peut remédier a ce problème? 

    Voici le code du fichier de creation d'un easteregg:

    const { User } = require('discord.js');
    const { Command } = require('discord.js-commando');
    const fs = require('fs');
    const { loggers } = require('winston');
    const obj = require('../../easteregg_name.json')
    const disbut = require('discord-buttons')
    
    module.exports = class BanCommand extends Command {
    	constructor(client) {
    		super(client, {
    			name: 'cerise',
    			group: 'easteregg',
    			memberName: 'cerise',
    			description: 'créer un easteregg',
    			args: [
    				{
    					key: "mot", 
    					type: "string",
    					prompt: "",
    				}
    			]
    		});
    
        }
        async run(message,{mot}) {
            let obj = {
                    eggs: []
    				
            };        
            fs.writeFile("easteregg_name.json", mot, function(err) {
                if(err) {
                    return console.log(err);
                }
             
                console.log(`Un easteregg viens d'être créé avec comme mot clé ${mot}`);
            });
                        
                    
                }
    }

    Et voici mon json 

    {
        "eggs": [ 
            {
                "mot": "souhieb",
                "decouvert": false
            },
            {
                "mot": "french",
                "decouvert": false
            },
            {
                "mot": "easteregg",
                "decouvert": false
            }
        ]
    }


    Merci de votre aide

    Je précise que je suis débutant dans la programmation en js et en bot discord

    -
    Edité par LucasMorel7 15 juin 2021 à 22:30:01

    • Partager sur Facebook
    • Partager sur Twitter
      15 juin 2021 à 22:54:58

      Bonjour la fonction writeFile vide le fichier avant d'écrire à l'intérieur si tu veut écrire en ajout dans le fichier tu peut lire le contenue avant d'écrire puis écrire en ajoutant le contenue déjà existant, pour un fichier JSON tu peut utilisé la fonction require pour importé directement le contenue sans devoir le parsé via JSON.parse.

      En haut de ton fichier tu as fait un require de eastereg.json avec le chemin: 

      ../../easteregg_name.json

      et dans la fonction writeFile tu as utilisé le chemin:

      easteregg_name.json

      Un des 2 chemins ne doit pas être correct.

      const { User } = require('discord.js');
      const { Command } = require('discord.js-commando');
      const fs = require('fs');
      const { loggers } = require('winston');
      const obj = require('../../easteregg_name.json')
      const disbut = require('discord-buttons')
       
      module.exports = class BanCommand extends Command {
          constructor(client) {
              super(client, {
                  name: 'cerise',
                  group: 'easteregg',
                  memberName: 'cerise',
                  description: 'créer un easteregg',
                  args: [
                      {
                          key: "mot",
                          type: "string",
                          prompt: "",
                      }
                  ]
              });
       
          }
          
          async run(message,{mot}) {
              let obj = {
                      eggs: []
                       
              };
              
              // lit le fichier JSON
              // avec la fonction require
              const contentEasteregg = require("easteregg_name.json");
              
              // ajoute le nouveau mot dans le tableau 
              contentEasteregg.push({
              	mot,
                  decouvert: false
              });
              
              // ré écrie le nouveau tableau dans le fichier
              fs.writeFile(
              	"easteregg_name.json",
                  
                  // convertit le JSON en texte pour l'écrire dans le fichier
                  JSON.stringify(contentEasteregg),
                  
                  function(err) {
                  if(err) {
                      return console.log(err);
                  }
                
                  console.log(`Un easteregg viens d'être créé avec comme mot clé ${mot}`);
              });
                           
                       
                  }
      }



      • Partager sur Facebook
      • Partager sur Twitter

      suggestion de présentation.

        16 juin 2021 à 14:37:52

        SamuelGaborieau3 a écrit:

        Bonjour la fonction writeFile vide le fichier avant d'écrire à l'intérieur si tu veut écrire en ajout dans le fichier tu peut lire le contenue avant d'écrire puis écrire en ajoutant le contenue déjà existant, pour un fichier JSON tu peut utilisé la fonction require pour importé directement le contenue sans devoir le parsé via JSON.parse.

        En haut de ton fichier tu as fait un require de eastereg.json avec le chemin: 

        ../../easteregg_name.json

        et dans la fonction writeFile tu as utilisé le chemin:

        easteregg_name.json

        Un des 2 chemins ne doit pas être correct.

        const { User } = require('discord.js');
        const { Command } = require('discord.js-commando');
        const fs = require('fs');
        const { loggers } = require('winston');
        const obj = require('../../easteregg_name.json')
        const disbut = require('discord-buttons')
         
        module.exports = class BanCommand extends Command {
            constructor(client) {
                super(client, {
                    name: 'cerise',
                    group: 'easteregg',
                    memberName: 'cerise',
                    description: 'créer un easteregg',
                    args: [
                        {
                            key: "mot",
                            type: "string",
                            prompt: "",
                        }
                    ]
                });
         
            }
            
            async run(message,{mot}) {
                let obj = {
                        eggs: []
                         
                };
                
                // lit le fichier JSON
                // avec la fonction require
                const contentEasteregg = require("easteregg_name.json");
                
                // ajoute le nouveau mot dans le tableau 
                contentEasteregg.push({
                	mot,
                    decouvert: false
                });
                
                // ré écrie le nouveau tableau dans le fichier
                fs.writeFile(
                	"easteregg_name.json",
                    
                    // convertit le JSON en texte pour l'écrire dans le fichier
                    JSON.stringify(contentEasteregg),
                    
                    function(err) {
                    if(err) {
                        return console.log(err);
                    }
                  
                    console.log(`Un easteregg viens d'être créé avec comme mot clé ${mot}`);
                });
                             
                         
                    }
        }



        quand je lance mon fichier et que je fais la commande pour créer l'easteregg les log me donnent ça 

        An error occurred while running the command: TypeError: contentEasteregg.push is not a function You shouldn't ever receive an error like this.



        -
        Edité par LucasMorel7 16 juin 2021 à 14:52:20

        • Partager sur Facebook
        • Partager sur Twitter
          16 juin 2021 à 20:26:17

          Le message d'erreur indique que contentEasteregg n'est pas un tableau, et effectivement je me suis trompé le contenue de ton fichier JSON et un objet qui contient un clés eggs qui elle et un tableau qui contient les données à modifié.

          L'instruction aurait du être  

          contentEasteregg.eggs.push
          • Partager sur Facebook
          • Partager sur Twitter

          suggestion de présentation.

          écrire du json avec discord.js

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown