我正在尝试创建 discord.js avatar 命令,但提及部分无法正常工作

cyl*_*iim 1 javascript bots node.js discord discord.js

我的不和谐机器人中有一个头像命令。当用户使用 时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);
Run Code Online (Sandbox Code Playgroud)

PLA*_*ken 6

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

 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);
}
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)


小智 5

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

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

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