我正在尝试执行discord.js头像命令,并且提及部分无法正常工作

时间:2019-04-10 05:55:22

标签: javascript node.js bots discord discord.js

我的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);

5 个答案:

答案 0 :(得分:3)

您有一个检查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;试图获取提到的用户,但是如果找不到任何人,它将使用作者的个人身份。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

除非你已经定义了它,否则没有什么像 avatarUrl
使用此代码获取用户的网址:

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

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

答案 4 :(得分:0)

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

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);是一个发送嵌入作为对消息的回复的函数