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;
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;
}