así que tropecé con otro problema y realmente no puedo entenderlo. Usando el siguiente código, sigue devolviendo que "no se puede leer la propiedad" nombre de usuario "de undefined, sin embargo, con el comando "! stats @USER" el argumento debería haberse establecido para el usuario, ¿verdad?
¡Cualquier ayuda sería muy apreciada!
const args = message.content.trim().split(' '); const command = args.shift().toLowerCase(); if(command === '!stats'){ if (args.length){ var userMentioned = args[0].id message.delete() } else{ var userMentioned = message.author.id message.delete() } if (message.channel.id === "876597275856601168") {{ setTimeout(function (){ message.delete(); const statsEmbed = new MessageEmbed() .setColor('#8F00FF') .setAuthor(userMentioned.user.username, userMentioned.user.displayAvatarURL()) .addFields( { name: '<:logoas2:876840515465797632>Current Level:', value: 'Current: **' + (userMentioned.userStats.level) + '**', inline: true }, { name: '<:xp2:874732251571707966>Current XP:', value: 'Amount: **' + userMentioned.userStats.xp + '**', inline: true }, { name: '<:xp3:876841199456092161>To Next Level:', value: 'Amount: **' + (userMentioned.xpToNextLevel - userMentioned.userStats.xp) + '**', inline: true }, { name: '<:etherite:874730607106748457>Etherite:', value: 'Amount: **' + userMentioned.userStats.etherite + '**', inline: true }, { name: '<:time:876866100774707290>Member Since:', value: 'Date: **' + userMentioned.userStats.dateofJoin + '**', inline: true }, ) .setTimestamp() .setFooter('Avesong', client.user.displayAvatarURL()); client.channels.cache.get("876597275856601168").send({ embeds: [statsEmbed] }); }, 500); }}}Sugeriría usar:
var userMentioned = Client.users.cache.get(args[0]);Tal como se ha observado antes, en este momento está ingresando un valor de cadena que obviamente no tiene la propiedad .id, etc.
¿Por qué optaría por lo anterior? Si no recuerdo mal, esta es la forma más elegante de evitar errores sobre el bot que no puede obtener datos de usuarios que no figuran en el gremio. Si bien este podría no ser el caso, es aconsejable evitar tales errores.
Además, es probable que deba verificar las intenciones de su bot en el portal de desarrollo; definitivamente necesitará el indicador GUILD_MEMBERS activo.
Dividir el contenido del mensaje no devuelve el usuario mencionado. En su lugar, devuelve la cadena como esta: "<@UserId>" . Puede usar Message.mentions en su lugar.
if (message.mentions.users.size){ var userMentioned = message.mentions.users.first() message.delete() }