Bot Discord : Comment intégrer une collection dans un JSON
WebReveuse
Messages postés
15
Date d'inscription
Statut
Membre
Dernière intervention
-
WebReveuse Messages postés 15 Date d'inscription Statut Membre Dernière intervention -
WebReveuse Messages postés 15 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis actuellement dans une impasse avec la programmation en nodejs de mon bot discord.
Je suis en train de créer une collection regroupant plusieurs collections contenant des variables d'environnement propres à chaque serveur.
L'arborescence de cette collection est du type suivant :
Mon but est d'exporter cette collection en format JSON dans un fichier interne au projet, afin de le récupérer à chaque redémarrage du bot, pour tout simplement enregistrer les configurations de chaque serveur. Car maintenant je dois tout écrire à la main dans chaque serveur pour initialiser chaque variable.
Le problème est qu'on ne peut exporter que des Objets dans ce type de fichier.
J'aurais donc besoin de "convertir" ces Collections en un Objet, ou d'utiliser un autre format de fichier pouvant accueillir ces Collections.
Merci par avance,
Cordialement,
Kilian.
Je suis actuellement dans une impasse avec la programmation en nodejs de mon bot discord.
Je suis en train de créer une collection regroupant plusieurs collections contenant des variables d'environnement propres à chaque serveur.
L'arborescence de cette collection est du type suivant :
Collection [Map] { '<guildID1>' => Collection [Map] { '<variable1>' => '<value1>', '<variableX>' => '<valueX>', }, '<guildIDX>' => Collection [Map] { '<variable1>' => '<value1>', '<variableX>' => '<valueX>', } }
Mon but est d'exporter cette collection en format JSON dans un fichier interne au projet, afin de le récupérer à chaque redémarrage du bot, pour tout simplement enregistrer les configurations de chaque serveur. Car maintenant je dois tout écrire à la main dans chaque serveur pour initialiser chaque variable.
Le problème est qu'on ne peut exporter que des Objets dans ce type de fichier.
J'aurais donc besoin de "convertir" ces Collections en un Objet, ou d'utiliser un autre format de fichier pouvant accueillir ces Collections.
Merci par avance,
Cordialement,
Kilian.
Message modifié par la modération
Pour une lecture plus facile du code, à l'avenir utilisez les balises, VOIR CETTE PAGE |
A voir également:
- Bot Discord : Comment intégrer une collection dans un JSON
- Compte discord - Guide
- Echo discord - Forum Casque et écouteurs
- Discord ne se lance pas - Forum Audio
- Discord ecran noir - Forum Discord
- Discord ne se lance pas - Ecran noir. - Forum Logiciels
1 réponse
Bon au final j'ai trouvé en cherchant un peu... Le problème avec cette méthode est qu'il faut créer et modifier au besoin l'Objet nécessaire à l'exportation en JSON.
Pour exporter une Collection en JSON j'ai donc dû passer par un Objet, puis en initialisant chaque variable avec celle de la Collection.
J'ai deux Collections initiales appelées client.env et envVariables.
Ensuite je créer une fonction permettant de charger le fichier de configuration dès le démarrage de mon bot (à placer donc à l'extérieur de toute autre fonction, si possible dès le début de votre code, après les affectations de constantes) :
Ne pas oublier de mettre
Cette partie est donc à insérer dans votre fichier principal,
Pour affecter les variables d'environnement en temps réel, j'ai personnellement opté pour un fichier de commande appelé
Pour affecter la bonne valeur à la bonne variable en fonction du serveur où l'on se trouve j'ai procédé de la manière suivante :
Insérez ce code dans la partie où l'utilisateur tape la commande de configuration. Par exemple basiquement dans
C'est aussi simple que ça pour exporter une Collection en format JSON, et oui ! :D
Pour exporter une Collection en JSON j'ai donc dû passer par un Objet, puis en initialisant chaque variable avec celle de la Collection.
J'ai deux Collections initiales appelées client.env et envVariables.
client.env = new Collection(); const variablesEnv = new Collection();
Ensuite je créer une fonction permettant de charger le fichier de configuration dès le démarrage de mon bot (à placer donc à l'extérieur de toute autre fonction, si possible dès le début de votre code, après les affectations de constantes) :
function loadEnvVariables(JSONsave = require("<chemin du fichier de configuration>")) { JSONsave.forEach(object => { const envVariables = object.envVariables; variablesEnv.set("prefix", envVariables.prefix); variablesEnv.set("welcome", envVariables.welcome); client.env.set(object.guildID, variablesEnv); }); } loadEnvVariables();
Ne pas oublier de mettre
loadEnvVariables();à la fin pour exécuter la fonction au démarrage du bot.
Cette partie est donc à insérer dans votre fichier principal,
main.js,
index.jsou tout autre nom de fichier et permet de récupérer le contenu du fichier JSON afin de l'affecter à
client.env.
client.envcontient les variables d'environnement que le bot utilisera.
envVariablesest uniquement utilisée dans la fonction pour récupérer toutes les variables d'environnement. Elle est donc inutile pour la suite.
Pour affecter les variables d'environnement en temps réel, j'ai personnellement opté pour un fichier de commande appelé
cfg.jsaccessible via la commande
?cfg. Mais peu importe de comment vous procédez, cela reste pareil au même.
Pour affecter la bonne valeur à la bonne variable en fonction du serveur où l'on se trouve j'ai procédé de la manière suivante :
let toJSON = new Array(); function envConfig(guildID, envVariables) { this.guildID = guildID; this.envVariables = envVariables; } client.env.each((collec, guildID) => { let envCfg = new envConfig(guildID, { prefix: collec.get("prefix"), welcome: collec.get("welcome") }); toJSON.push(envCfg); }); let configJSON = JSON.stringify(toJSON); writeFile("<chemin du fichier de configuration>", configJSON, err => { if (err) throw err; });
Insérez ce code dans la partie où l'utilisateur tape la commande de configuration. Par exemple basiquement dans
client.on("message")ou comme moi dans un fichier à part
cfg.js.
C'est aussi simple que ça pour exporter une Collection en format JSON, et oui ! :D