我正在尝试制作一个 discord.js avatar 命令,但提到的部分无法正常工作

I am trying to make a discord.js avatar command, and the mentioning portion doesn't work correctly

我的 discord 机器人中有一个头像命令。当用户使用 h.avatar 时,它会输出他们的头像,效果很好。每当他们尝试使用 h.avatar @user 时,什么也没有发生。
这是我的代码:

 } if (message.content.startsWith(config.prefix + "avatar")) {
      if (!message.mentions.users.size) {
        const avatarAuthor = new Discord.RichEmbed()
      .setColor(0x333333)
      .setAuthor(message.author.username)
      .setImage(message.author.avatarURL)
        message.channel.send(avatarAuthor);
        let mention = message.mentions.members.first();
        const avatarMention = new Discord.RichEmbed()
        .setColor(0x333333)
        .setAuthor(mention.user.username)
        .setImage(mention.user.avatarURL)
        message.channel.send(avatarMention);

你有一个支票 if (!message.mentions.users.size) { ,只有当你没有提到某人时才会发出命令 运行。您需要在代码中使用 else { 或执行以下操作:

 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);
}

const user = message.mentions.users.first() || message.author; 尝试获取提到的用户,但如果找不到任何人,它将使用作者使用过的用户。

也可以这样使用:

if (!message.mentions.users.size) {
    message.channel.send('Nobody was mentioned');
    return;
}
// continue command here, after guard clause
 if (message.content.startsWith(prefix + 'avatar')) {
   let user = message.mentions.users.first();
   if(!user) user = message.author;
   let color = message.member.displayHexColor;
   if (color == '#000000') color = message.member.hoistRole.hexColor;
   const embed = new Discord.RichEmbed()
                   .setImage(user.avatarURL)
                   .setColor(color)
    message.channel.send({embed});
 }
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)
        }
}

没有什么比 avatarUrl 更好的了,除非你已经定义了它。
使用此代码获取用户的 url:

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

只需将message.author替换为提到的用户

这些是有效答案的更新版本

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);
}

这使用了 discord 的头像 url 和 msg.lineReply(avatarEmbed);是一个发送嵌入作为对消息的回复的函数

我的

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);
    }

})