Discord bot programmation

Discord bot programmation - Javascript/Node.js - Programmation

Marsh Posté le 19-03-2018 à 20:04:13    

Bonjour à tous !
 
Voila j'ai crée/modifié un bot Discord pour affiché directement les stats dans le chat. Tous fonctionnes parfaitement, mais du jour au lendemain lorsque l'on tape -ftn pc lenom je bot crash en m'affichant l'error suivante :
 
RAS : Clé Discord OK, Clé API Fortnite traker OK
 

Code :
  1. TypeError: Cannot read property 'displayValue' of undefined
  2. api-controller.js:81
  3.     at Request.request [as _callback] (c:\Users\MmePoWa\Desktop\MelloowBot Fortnite\api-controller.js:81:50)


 
la DisplayValue est undefined... alors que je n'avais absolument pas ce soucis avant.
 
Voici le code complet :  
 

Code :
  1. module.exports = {
  2.  
  3.   stats: function(msg, args){
  4.     let platform = args[0]
  5.    if(platform) platform = platform.toLowerCase()
  6.     const username = args.slice(1,args.length).join('%20')
  7.     if(platform !== 'psn' && platform !== 'pc' && platform !== 'xbl' || platform === undefined){
  8.       msg.reply(`
  9.       **La platforme de jeu n'est pas correcte.**
  10.       __**Tape la commande comme ceci:**__
  11.       *-ftn pc lenom*
  12.       *-ftn xbl lenom*
  13.       *-ftn psn lenom*
  14.       `)
  15.       return null;
  16.     }
  17.     else if(username === undefined){
  18.       msg.reply(`
  19.       **Le nom du joueur n'est pas correcte.**
  20.       __**Tape la commande comme ceci:**__
  21.       *-ftn platform lenom*
  22.       *-ftn pc lenom*
  23.       `)
  24.       return null;
  25.     }
  26.     const options = {
  27.       'uri': `https://api.fortnitetracker.com/v1/profile/${platform}/${username}`,
  28.       'headers': {
  29.         'TRN-Api-Key': process.env.FORNITE_TRACKER_KEY,
  30.         'Content-Type': 'application/json'
  31.       }
  32.     }
  33.     request(options, (err, res, body) => {
  34.       if(err){
  35.         console.error(err)
  36.         msg.reply(`Un problème est survenu lors de l'obtention des statistiques pour ${username.replace('%20', ' ')} on ${platform}.`)
  37.         return null
  38.       }
  39.       else if(res.statusCode === 200){
  40.         data = JSON.parse(body)
  41.         let soloWins = 0
  42.         let soloTime = '0h 0m'
  43.         let soloKd = 0
  44.         let soloKills = 0
  45.         let soloMatches = 0
  46.         let solowinRatio = 0
  47.         let solokpm = 0
  48.         let duoWins = 0
  49.         let duoTime = '0h 0m'
  50.         let duoKd = 0
  51.         let duoKills = 0
  52.         let duoMatches = 0
  53.         let duowinRatio = 0
  54.         let duokpm = 0
  55.         let squadWins = 0
  56.         let squadTime = '0h 0m'
  57.         let squadKd = 0
  58.         let squadKills = 0
  59.         let squadMatches = 0
  60.         let squadwinRatio = 0
  61.         let squadkpm = 0
  62.        
  63.        
  64.         if(data.error){
  65.           msg.reply(`${data.error}`)
  66.           return null
  67.         }
  68.         // Solo
  69.         if(data.stats.p2){
  70.           soloWins = data.stats.p2.top1.displayValue
  71.           soloTime = data.stats.p2.minutesPlayed.displayValue
  72.           soloKd = data.stats.p2.kd.valueDec
  73.           soloKills = data.stats.p2.kills.valueInt
  74.           soloMatches = data.stats.p2.matches.valueInt
  75.           solowinRatio = data.stats.p2.winRatio.valueDec
  76.           solokpm = data.stats.p2.kpm.valueDec
  77.         }
  78.         // Duos
  79.         if(data.stats.p10){
  80.           duoWins = data.stats.p10.top1.displayValue
  81.           duoTime = data.stats.p10.minutesPlayed.displayValue
  82.           duoKd = data.stats.p10.kd.valueDec
  83.           duoKills = data.stats.p10.kills.valueInt
  84.           duoMatches = data.stats.p10.matches.valueInt
  85.           duowinRatio = data.stats.p10.winRatio.valueDec
  86.           duokpm = data.stats.p10.kpm.valueDec
  87.         }
  88.        
  89.         // Squad Wins
  90.         if(data.stats.p9){
  91.           squadWins = data.stats.p9.top1.displayValue
  92.           squadTime = data.stats.p9.minutesPlayed.displayValue
  93.           squadKd = data.stats.p9.kd.valueDec
  94.           squadKills = data.stats.p9.kills.valueInt
  95.           squadMatches = data.stats.p9.matches.valueInt
  96.           squadwinRatio = data.stats.p9.winRatio.valueDec
  97.           squadkpm = data.stats.p9.kpm.valueDec
  98.         }
  99.      
  100.      
  101.         const user = username.replace(/b/ig, '??').replace('%20', ' ')
  102.         msg.channel.send(`
  103.         *Les Stats de* __**${user}**__ *sur* __**${platform}:**__
  104.         __**Game | n° Wins | Temps de jeu | KD Ratio**__
  105.         __**Solo**__  | ${soloWins} wins | ${soloTime}  | ${soloKd}**%**  | ${soloKills} Kills
  106.         __**Duo**__   | ${duoWins} wins  | ${duoTime}   | ${duoKd}**%**   | ${duoKills} Kills
  107.         __**Squad**__ | ${squadWins} wins| ${squadTime} | ${squadKd}**%** | ${squadKills} Kills
  108.         __**Game | n° Match | Win Ratio | Kill/Min**__
  109.         __**Solo**__  | ${soloMatches} parties  | ${solowinRatio}**%** wins  | ${solokpm} kill/min
  110.         __**Duo**__   | ${duoMatches} parties   | ${duowinRatio}**%** wins  | ${duokpm} kill/min
  111.         __**Squad**__ | ${squadMatches} parties | ${squadwinRatio}**%** wins | ${squadkpm} kill/min
  112.      
  113.         *Fortnite Tracker Stats*
  114.         `)
  115.       }
  116.       else {
  117.         msg.reply(`Quelque chose s'est mal passé. Pardon :b:ud.`)
  118.         return null
  119.       }
  120.     })
  121.   }
  122. }


 
Merci d'avance pour toutes aides !
 
A bientôt

 
 

Reply

Marsh Posté le 19-03-2018 à 20:04:13   

Reply

Marsh Posté le 19-03-2018 à 20:34:28    

Bonjour,
 
Parce que, la source, elle, a changé, je suppose. [:spamafote]


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Marsh Posté le 19-03-2018 à 21:08:24    

Possible, auriez vous un idée ?  
 
Merci de ta réponse

Reply

Marsh Posté le 19-03-2018 à 21:18:30    

Ben suffit de regarder ce que le fichier JSON pond, visiblement l'une de propriétés n'existe plus...
Ce n'est pas la propriété displayValue qui renvoie "undefined" mais une propriété qui est "undefined", propriété sur laquelle vous tentez de lire la propriété displayValue. Bon ok je sens que ce n'est pas clair mais ça ne change pas grand chose.
 
L'une des propriétés n'existe plus ou a changé de nom dans le fichier JSON, il suffit de la repérer.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Marsh Posté le 19-03-2018 à 21:22:44    

Merci de ta réponse MaybeEijorNot, si elle est clair je suis du même avis que toi !, comment regarde tu le fichier JSON pour le coup ?

Reply

Marsh Posté le 19-03-2018 à 22:52:35    

Euh, je dirais... en l'affichant via ton navigateur, par ex ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 20-03-2018 à 20:33:02    

Problème trouver !, les valeurs n'étaient plus correcte éffectivement, en lancent la ligne "console.log" j'ai pu mettre la mains sur les nouvelles, merci de votre aide  
 
A bientôt

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed