Estoy tratando de hacer un sistema de vales discord , pero cuando lo hago, ejecuta 2 comandos, uno es -Vale y el otro es -Vales ```
client.on("message", (message) => { if (message.content.startsWith("-Vouches")) { const user = message.mentions.users.first(); if (user === undefined) { return; }Si siempre usa startsWith ", seguramente ejecutará dos comandos si uno de los nombres de comando está contenido en otro.
Por ejemplo, si tenemos este código:
client.on("message", (message) => { if (message.content.startsWith("!test")) console.log("test command"); if (message.content.startsWith("!test2")) console.log("test2 command"); }); Ambos comandos se ejecutarán si escribimos !test .
Entonces, una solución muy utilizada es dividir el mensaje por espacios, luego tomar la primera palabra y probarla, no si comienza con una cadena, prueba toda la cadena, así.
client.on("message", (message) => { const [commandName, ...arguments] = message.content.split(/\s+/); // commandName is the first word // arguments is an array of the other words of the message if (commandName === "!test") console.log("test command"); if (commandName === "!test2") console.log("test2 command"); }); Aquí dividimos el mensaje por espacios, usando la expresión regular \s+ , luego tomamos la primera palabra y la probamos directamente. También puede usar los arguments de la matriz para sus comandos.