Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

139
Visualizações
Cómo manejar argumentos con espacios en Discord.js

Estoy tratando de que mi bot de Discord maneje los comandos con espacios en el argumento. Mi variable args está definida en mi archivo index.js :

 const args = message.content.slice(prefix.length).split(/ +/); const commandName = args.shift().toLowerCase();

Mi archivo de comando ( perk.js ) se ve así:

 const Discord = require('discord.js'); const PerkData = require('./perk.json'); module.exports = { name: 'perk', args: true, execute(message, args) { for (let i = 0; i < PerkData.perks.length; i++) { if (PerkData.perks[i].id.toLowerCase() === args[0].toLowerCase()) { const perkEmbed = new Discord.MessageEmbed() .setColor('#000000') .setTitle('__**' + PerkData.perks[i].name + '**__ ') .setURL(PerkData.perks[i].url) .setThumbnail(PerkData.perks[i].gif) .setDescription('A teachable unique [' + PerkData.perks[i].character + '](' + PerkData.perks[i].characterURL + ') Perk <:Perk:833657215743295499>. It can be unlocked for all other characters from Level ' + PerkData.perks[i].lvl + ' onwards:') .addField('__Description__', PerkData.perks[i].description, false) message.channel.send(perkEmbed) } } } }

A partir de este momento, tengo un campo "id" en el archivo JSON que tiene guiones - en lugar de espacios, que luego lee el archivo perk.js y lo compara con la descripción. Ejemplo: .perk ace-in-the-hole

¿Cómo lo hago para poder usar espacios en el argumento en lugar de tener que usar guiones?

¿Necesito cambiar cómo se args los argumentos en index.js ? ¿O se puede hacer dentro del archivo de comandos, perk.js ?

Para resumir, tengo: .perk ace-in-the-hole . Pero quiero poder hacer esto: .perk ace in the hole

(Lo siento si esto fue mal escrito, no soy un codificador experimentado...)

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Simplemente puede unir la matriz de argumentos con un espacio.

 execute(message, args) { // Join the args array let perkArg = args.join(' ') for (let i = 0; i < PerkData.perks.length; i++) { if (PerkData.perks[i].id.toLowerCase() === perkArg.toLowerCase()) { // ... } } }

Suponiendo que todos los ID de beneficio sean únicos y que solo desee enviar un mensaje, también puede buscar en toda la matriz PerkData.perks en una sola línea sin un bucle for para encontrar un solo elemento.

 // Join the args array let perkArg = args.join(' ') let perk = PerkData.perks.find(perk => perk.id === perkArg.toLowerCase()) if(perk !== undefined) { // perk was found } else { // perk was not found }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda