Besoin d'aide pour mon Bot discord.JS avec Json

Résolu
Bryan1675 Messages postés 21 Statut Membre -  
Bryan1675 Messages postés 21 Statut Membre -
Bonjour,
je suis actuellement dans la création d'un bot discord.js avec javascript qui effectue des fonctions diverse et variée,
dans le but d’améliorer mon code j'ai décider de créer un json qui me permet de réunir l'ensemble des commandes de mon bot avec une courte explication de la fonction et de parcourir le tableau avec une boucle.
ma boucle fonctionne, elle parcours bien le tableau json,
le problème c'est que a chaque élément j'ai "undefined" et je ne vois pas ce qu'il me manque pour terminer la fonction

merci pour votre aide,
Bryan.

voici l'élément de code en Javascript
if (message.content.toLowerCase() === prefix + 'aide') {

         const help = new Discord.RichEmbed()
             .setTitle("Liste des commandes")
             .setColor(color)
             .setThumbnail(bot.user.avatarURL)
             .setFooter(`Bot développé par ${bot.users.get("monID").tag}`, bot.users.get("mon ID").avatarURL);
 
             for ( var info in aide.aidecmds ) {
                help.addField(info.name, info.value, true);
            }

            message.channel.send({ embed : help });
}


Lien entre mon index.js et le JSON
const aide = require("./commandes.json");


extrait du json qui contient 6 "name" et 6 "value"

{
    "aidecmds": [
        {
            "name": "ping",
            "value": "Je donne mon ping"
        },
        {
            "name": "roll",
            "value": "Je donne un nombre aléatoire entre 1 et 100"
        }
    ]
}


Le résultat :
A voir également:
  • Besoin d'aide pour mon Bot discord.JS avec Json
  • Designer bot - Accueil - Guide Intelligence artificielle
  • Spy bot - Télécharger - Antivirus & Antimalwares
  • Bot vocal - Accueil - Intelligence artificielle
  • Dual bot - Guide
  • Bot click - Télécharger - Divers Utilitaires

1 réponse

Reivax962 Messages postés 3742 Statut Membre 1 011
 
Bonjour,

La boucle for..in en javascript ne fonctionne pas tout à fait comme ça.
En fait, elle te donne la clef du tableau, et pas sa valeur. Du coup pour la valeur il faut y accéder avec [].
Ta boucle doit donc s'écrire :
             for (var infokey in aide.aidecmds) {
                var info = aide.aidecmds[infokey];
                help.addField(info.name, info.value, true);
            }

Xavier
2
Reivax962 Messages postés 3742 Statut Membre 1 011
 
En fait je viens de lire un peu de doc, for..in est vraiment à utiliser avec des pincettes.
Esssaie plutôt avec for..of, qui fonctionne comme tu l'avais codé au début, donc :
             for ( var info of aide.aidecmds ) {
                help.addField(info.name, info.value, true);
            }

Xavier
0
Bryan1675 Messages postés 21 Statut Membre
 
Bonsoir,
oui en effet après avoir essayer ta première solution, j'ai constater que ça me mettais une erreur,
j'ai donc essayer ta seconde solution et ça fonctionne, merci.

mais du coup quel est la différence entre un for... in et un for.. of ?

Bryan
0
Reivax962 Messages postés 3742 Statut Membre 1 011
 
Alors perso j'ai lu surtout la première réponse à cette question, mais elle est en anglais :
https://stackoverflow.com/questions/9329446/for-each-over-an-array-in-javascript
0
Bryan1675 Messages postés 21 Statut Membre
 
Merci, je vais tenter de lire et comprendre ce qui est écrit,
encore merci pour mon bot ça m'a été d'une grande aide :3
0