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}`);
});
}
}
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}`);
});
}
}
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.
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
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.
suggestion de présentation.
suggestion de présentation.