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

Résolu/Fermé
Bryan1675 Messages postés 18 Date d'inscription lundi 20 juin 2016 Statut Membre Dernière intervention 8 mars 2019 - Modifié le 7 mars 2019 à 11:35
Bryan1675 Messages postés 18 Date d'inscription lundi 20 juin 2016 Statut Membre Dernière intervention 8 mars 2019 - 8 mars 2019 à 18:29
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:

1 réponse

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
8 mars 2019 à 14:14
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 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
8 mars 2019 à 14:23
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 18 Date d'inscription lundi 20 juin 2016 Statut Membre Dernière intervention 8 mars 2019
8 mars 2019 à 17:46
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 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
Modifié le 8 mars 2019 à 18:25
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 18 Date d'inscription lundi 20 juin 2016 Statut Membre Dernière intervention 8 mars 2019
8 mars 2019 à 18:29
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