发布使用Discord.js嵌入的用户头像

时间:2020-02-04 19:46:11

标签: javascript discord discord.js

我正在将Discord.js用于不和谐的bot,并且正在尝试制作它,以便在您执行命令!avatar @user

它将用提及的用户的化身的嵌入式图像回复。我不断得到:

(node:3168) UnhandledPromiseRejectionWarning: DiscordAPIError: Invalid Form Body embed.image.url: Not a well formed URL.

这是我到目前为止的代码,但是我不知道还有什么方法可以抓住用户的头像?

    const Discord = require('discord.js');
const config = require('./config.json');
const client = new Discord.Client();

function getUserFromMention(mention) {
    if (!mention) return;
    if (mention.startsWith('<@') && mention.endsWith('>')) {
        mention = mention.slice(2, -1);
        if (mention.startsWith('!')) {
            mention = mention.slice(1);
        }
        return client.users.get(mention);
    }
}

function getUserFromMentionRegEx(mention) {
    const matches = mention.match(/^<@!?(\d+)>$/);  
    const id = matches[1];
    return client.users.get(id);
}

client.once('ready', () => {
    console.log('Ready!');
});

const prefix = "!";
client.on('message', message => {
    if (!message.content.startsWith(prefix)) return;  
    const withoutPrefix = message.content.slice(prefix.length);
    const split = withoutPrefix.split(/ +/);
    const command = split[0];
    const args = split.slice(1);

    if (command === 'avatar') {
        if (args[0]) {          
            const user = getUserFromMention(args[0]);
            const userAvatar = user.displayAvatarURL;
            if (!user) {
                return message.reply('Please use a proper mention if you want to see someone else\'s avatar.');
            }
            const avatarEmbed = new Discord.RichEmbed()
            .setColor('#275BF0')
            .setImage('userAvatar');
            message.channel.send(avatarEmbed);
        }

        return message.channel.send(`${message.author.username}, your avatar: ${message.author.displayAvatarURL}`);
    }
});

client.login(config.token);

1 个答案:

答案 0 :(得分:0)

您不需要使用其他功能来解析提及,为此不具备方法。您可以使用message.mentions.members.first()

然后您尝试将图像设置为带有文本userAvatar的字符串,以确保您遇到错误。

您可以获取提及成员的头像并发送此代码。

const Discord = require('discord.js');
const config = require('./config.json');
const client = new Discord.Client();


client.once('ready', () => {
    console.log('Ready!');
});

const prefix = "!";

client.on('message', message => {
    if (!message.content.startsWith(prefix)) return;  
    const withoutPrefix = message.content.slice(prefix.length);
    const split = withoutPrefix.split(/ +/);
    const command = split[0];
    const args = split.slice(1);    



    if (command === 'avatar') {
        let targetMember;
        if(!message.mentions.members.first()) {
            targetMember = message.guild.members.get(message.author.id);
        } else {
            targetMember = message.mentions.members.first()
        }

        let avatarEmbed = new Discord.RichEmbed()
            .setImage(targetMember.user.displayAvatarURL)
            .setColor(targetMember.displayHexColor);
            message.channel.send(avatarEmbed);
    }
});