Search code examples
javascriptnode.jsdiscorddiscord.jsnode-modules

Identifier 'user' has already been declared


I'm learning JavaScript, I'm making a bot discord with switch, case and break (to test). I have a problem, when I do two commands using the same constant name, it gives me an error. I would like that for example, user is read only if the command is written. Do you have any idea how to do this?

Code:

case "avatar":
     const user = message.mentions.users.first() || client.users.cache.get(args[0]) || await client.users.fetch(args[0]) ||  message.author
     if (!user) return message.edit(`Aucun utilisateur de trouvé pour \`${args[0] || "rien"}\``)
     message.edit(`Voici l'avatar de **${user.tag}**:\n${user.displayAvatarURL({dynamic: true, size: 4096})}`)
     break;

case "userinfo":
     if (!message.guild) return message.edit("Commande utilisable uniquement sur un serveur")
     const user = message.mentions.members.first() || client.members.cache.get(args[0]) || await client.members.fetch(args[0]) ||  message.member
     if (!user) return message.edit(`Aucun utilisateur de trouvé pour \`${args[0] || "rien"}\``)
     break;

Solution

  • You could enclose the code after each case: in { and }

    Each user declaration is therefore in a separate block, and therefore a separate scope. That should allow you to use the same variable name in different blocks, which you presumably want to do, to make it easier to read and understand your code.

    
    case "avatar": {
         const user = message.mentions.users.first() || client.users.cache.get(args[0]) || await client.users.fetch(args[0]) ||  message.author
         if (!user) return message.edit(`Aucun utilisateur de trouvé pour \`${args[0] || "rien"}\``)
         message.edit(`Voici l'avatar de **${user.tag}**:\n${user.displayAvatarURL({dynamic: true, size: 4096})}`)
         break;
    }
    
    case "userinfo": {
         if (!message.guild) return message.edit("Commande utilisable uniquement sur un serveur")
         const user = message.mentions.members.first() || client.members.cache.get(args[0]) || await client.members.fetch(args[0]) ||  message.member
         if (!user) return message.edit(`Aucun utilisateur de trouvé pour \`${args[0] || "rien"}\``)
         break;
    }