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

Résolu
Bryan1675 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -  
Bryan1675 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -
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
  • Spy bot - Télécharger - Antivirus & Antimalwares
  • Designer bot - Accueil - Guide Intelligence artificielle
  • Bot vocal - Accueil - Intelligence artificielle
  • Dual bot - Guide
  • Bot click - Télécharger - Divers Utilitaires

1 réponse

Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   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 3672 Date d'inscription   Statut Membre Dernière intervention   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 18 Date d'inscription   Statut Membre Dernière intervention  
 
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 3672 Date d'inscription   Statut Membre Dernière intervention   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 18 Date d'inscription   Statut Membre Dernière intervention  
 
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