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

299
Views
TypeError: no se puede leer la propiedad 'usuario' de un error indefinido al intentar ejecutar un comando

Estaba tratando de hacer un comando para hacer ping a un usuario aleatorio cada vez que se ejecuta el comando, pero parece que me encontré con un problema.

Aquí está mi código:

 const DiscordCommand = require('../../contracts/DiscordCommand'); class KickCommand extends DiscordCommand { onCommand(message) { message.delete(); const userList = message.guild.members.cache.array(); var randomNumber = Math.round(Math.random() * message.guild.memberCount); var pingPerson = userList[randomNumber]; message.channel.send('<@' + pingPerson.user.id + '>').then((msg) => { msg.delete({ timeout: 100 }); }); } } module.exports = KickCommand;

El error que obtengo:

 TypeError: Cannot read property 'user' of undefined
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

El problema es que Math.round(Math.random() * message.guild.memberCount) puede devolver números más grandes que el último índice cuando usa round() en lugar de floor() .

Sin embargo; en lugar de crear una función generadora aleatoria, puede usar Collection#random() para obtener valores aleatorios únicos de una colección.

message.guild.members.cache devuelve una colección, por lo que podría usarla así:

 class KickCommand extends DiscordCommand { onCommand(message) { message.delete(); const pingPerson = message.guild.members.cache.random(); message.channel.send('<@' + pingPerson.user.id + '>').then((msg) => { msg.delete({ timeout: 100 }); }); } }

Probablemente también sea una buena idea fetch a los usuarios primero:

 class KickCommand extends DiscordCommand { async onCommand(message) { message.delete(); await message.guild.members.fetch(); const pingPerson = message.guild.members.cache.random(); const msg = await message.channel.send('<@' + pingPerson.user.id + '>'); // msg.delete() doesn't take any parameters in v13, so use setTimeout instead setTimeout(() => msg.delete(), 100); } }

Y asegúrese de que la intención GUILD_MEMBERS esté habilitada.

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!