Skip to content Skip to sidebar Skip to footer

I Am Trying To Make A Discord.js Avatar Command, And The Mentioning Portion Doesn't Work Correctly

I have an avatar command in my discord bot. When the user uses h.avatar, it outputs their avatar, which works fine. Whenever they try to use h.avatar @user, nothing happens. Here

Solution 1:

You have a check if (!message.mentions.users.size) { which makes the command run only if you do not mention somebody. You either need to use an else { in your code or do:

 if (message.content.startsWith(config.prefix + 'avatar')) {
    const user = message.mentions.users.first() || message.author;
    const avatarEmbed = new Discord.RichEmbed()
        .setColor(0x333333)
        .setAuthor(user.username)
        .setImage(user.avatarURL);
    message.channel.send(avatarEmbed);
}

The const user = message.mentions.users.first() || message.author; tries to get the user that was mentioned but if it does not find anyone it will use the author's used.

This can also be used like this:

if (!message.mentions.users.size) {
    message.channel.send('Nobody was mentioned');
    return;
}
// continue command here, after guard clause

Solution 2:

if(message.content.startsWith(prefix+'av')){
    
        
        if(message.mentions.users.size){
            let member=message.mentions.users.first()
        if(member){
            const emb=new Discord.MessageEmbed().setImage(member.displayAvatarURL()).setTitle(member.username)
            message.channel.send(emb)
            
        }
        else{
            message.channel.send("Sorry none found with that name")

        }
        }else{
            const emb=new Discord.MessageEmbed().setImage(message.author.displayAvatarURL()).setTitle(message.author.username)
            message.channel.send(emb)
        }
}

Solution 3:

There's nothing like avatarUrl unless you have defined it.
Use this code to get the url of a user:

message.channel.send("https://cdn.discordapp.com/avatars/"+message.author.id+"/"+message.author.avatar+".jpeg");

Just replacemessage.author with the user who is mentioned


Solution 4:

These is the updated version of the answer that works

if (message.content.startsWith(config.prefix + 'avatar')) {
const user = msg.mentions.users.first() || msg.author;
const avatarEmbed = new MessageEmbed()
  .setColor(0x333333)
  .setAuthor(`${user.username}'s Avatar`)
  .setImage(
    `https://cdn.discordapp.com/avatars/${user.id}/${user.avatar}.png?size=256`
  );
msg.lineReply(avatarEmbed);
}

This uses discord's avatar url, and msg.lineReply(avatarEmbed); is a function that sends the embed as a reply to the message


Solution 5:

My

if (msg.content.startsWith(prefix + 'avatar')) {
    const user = msg.mentions.users.first() || msg.author;
    const avatarEmbed = new MessageEmbed()
      .setColor('')
      .setAuthor(`${user.username}'s Avatar`)
      .setImage(
        `https://cdn.discordapp.com/avatars/${user.id}/${user.avatar}.png?size=256`
      );
    msg.reply(avatarEmbed);
    }

})


Post a Comment for "I Am Trying To Make A Discord.js Avatar Command, And The Mentioning Portion Doesn't Work Correctly"