Mon code pour bot discord ne fonctionne pas mais je ne trouve pas l'erreur

#1

Bonjour a tous, j’essaye de créer une commande pour un bot discord, je vous montre d’abord mon code :

const maps = require("../../config/maps.json");
const tiers = require("../../config/tiers.json");

module.exports = {
  name: "spot",
  description: "Donne un map avec les spots les plus interresant dans chaque villes. Exemple : !spot ferndell t3",
  execute(message, args) {
    const vide = args[11111111111111111111111111];
    const map = args[0].toLowerCase();
    const tier = args[1].toLowerCase();
    var verifm = maps.map.toLowerCase();
  	var verift = tiers.tier.toLowerCase();
    if (map != vide && tier != vide) {
      if (map == verifm) {
      	if (tier == verift) {
      	  message.channel.send(`https://spot.albot.ga/${map}-${tier}.png`);
      	}else{
      		message.reply(" tier invalide, pour voir la liste des tiers : !tier");
      	}
      }else{
      	message.reply(" carte invalide, pour voir la liste des cartes : !villes");
      }
    }else{
        message.reply("mauvaise utilisation de la commande. Exemple d'utilisation : !spot bridgewatch t2. Pour voir les villes ou les tiers utlisez !villes ou !tier");
    }
  },
};

Le problème est que qu’en j’essaye de faire la commande le bot me répond @MisterTM82, carte invalide, pour voir la liste des cartes : !villes. Je ne comprend pas, j’ai écrit a la lettre prés le nom des villes en respectant majuscules et minuscules. Je vous donne aussi le lien du fichier maps.json , il est un peut long donc je le met das un pastebin : https://pastebin.com/9eQH2xUk . J’espère que vous serait m’aider je débute encore, donc je ne connais pas tout.

PS : Je n’ai aucune erreur dans la console.

#2

Bonjour,

d’abord pas besoin de créer un variable vide.
if (map && tier) suffit
ensuite tu vérifie quoi ? map c’est quoi? un nom de ville? et verifm doit etre undefined vu que maps est un object de nom de villes et maps.map n’existe pas…
fait des console.log(maps.map) et console.log(map), pareil pour tier et verift, tu verras ce que tu compare, ensuite prends l’habitude de verifier avec === pour férifier aussi le type.
Et je ne comprends pas la syntaxe de ton object maps, autant utiliser un array des noms de villes, et tu vérifiras l’existance de ta ville avec maps.indexOf(map) > -1

#3

Bonjour, j’ai appliqué vos conseils mais une erreur est survenu, je vous renvoi le nouveau code ainsi que l’erreur :

const maps = require("../../config/maps.json");
const tiers = require("../../config/tiers.json");

module.exports = {
  name: "spot",
  description: "Donne un map avec les spots les plus interresant dans chaque villes. Exemple : !spot ferndell t3",
  execute(message, args) {
    const map = args[0];
    const tier = args[1];
    console.log(maps);
    console.log(map);
    console.log(tiers);
    console.log(tier);
    const verifm = JSON.parse(maps);
    const verift = JSON.parse(tiers);

    if (map && tier) {
      if (verifm.indexOf(map) > -1) {
        if (verift.indexOf(tier) > -1) {
          message.channel.send(`https://spot.albot.ga/${map}-${tier}.png`);
        }else{
          message.reply(" tier invalide, pour voir la liste des tiers : !tier");
        }
      }else{
        message.reply(" carte invalide, pour voir la liste des cartes : !villes");
      }
    }else{
        message.reply("mauvaise utilisation de la commande. Exemple d'utilisation : !spot bridgewatch t2. Pour voir les villes ou les tiers utlisez !villes ou !tier");
    }
  },
};

Et voila l’erreur :

SyntaxError: Unexpected token o in JSON at position 1
at JSON.parse (<anonymous>)
 at Object.execute (/home/pi/Bot-Discord/src/commands/spot.js:14:25)
at Client.bot.on.message (/home/pi/Bot-Discord/src/bot.js:34:13)
 at emitOne (events.js:116:13)
 at Client.emit (events.js:211:7)
 at MessageCreateHandler.handle (/home/pi/node_modules/discord.js/src/client/websocket/packets/handlers/MessageCreate.js:9:34)
at WebSocketPacketManager.handle (/home/pi/node_modules/discord.js/src/client/websocket/packets/WebSocketPacketManager.js:103:65)
at WebSocketConnection.onPacket (/home/pi/node_modules/discord.js/src/client/websocket/WebSocketConnection.js:333:35)
at WebSocketConnection.onMessage (/home/pi/node_modules/discord.js/src/client/websocket/WebSocketConnection.js:296:17)
 at WebSocket.onMessage (/home/pi/node_modules/ws/lib/event-target.js:120:16)

Voila, j’espère que vous pourrez m’aider.

#4

un require .json renvoie un object pas besoin de JSON.parse, pas besoin de verifm et verift

if (maps.indexOf(map) > -1) {

et tu n’as pas oublié de changer la syntaxe de ton .json? par

[“Astolat”,“BelleverTor”…]

#5

Oui l’erreur venez bien de la, mais je rencontre un autre problème, a quel endroit je pourrait appliqués la fonction .toLowerCase() car je l’ai appliqué a mes arguments mais j’ai essayé de plusieurs manières pour les fichiers json mais aucune n’a fonctionné. Dans tout les cas je vous remercies pour votre aide.

#6

maps.forEach(function(m)){ return m.toLowerCase()}
Mais ça serait mieux d’avoir ton json direct en lowercase.
Vive l’entraide 😉