Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

138
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!