Skip to content

Profile URLs

Get avatar, banner, and other CDN URLs easily with User/Webhook/GuildMember methods or standalone CDN helpers for raw API data.

User avatar and banner

When you have a User object (e.g. message.author), use avatarURL(), displayAvatarURL(), and bannerURL(). These handle animated avatars (a_ prefix) and default fallbacks.

javascript
import { Client, Events, EmbedBuilder } from '@erinjs/core';

const client = new Client({ intents: 0 });

client.on(Events.MessageCreate, async (message) => {
  if (message.content === '!avatar') {
    const user = message.author;
    // avatarURL() returns null if no custom avatar; displayAvatarURL() uses default
    const avatarUrl = user.displayAvatarURL({ size: 256 });
    const bannerUrl = user.bannerURL({ size: 512 });

    const embed = new EmbedBuilder()
      .setTitle(`${user.username}'s profile`)
      .setThumbnail(avatarUrl)
      .setColor(user.avatarColor ?? 0x5865f2);
    if (bannerUrl) embed.setImage(bannerUrl);
    await message.reply({ embeds: [embed] });
  }
});

Raw API data: CDN helpers

When you have raw API data (e.g. from client.rest.get(Routes.user(id))), use the standalone CDN helpers. They work with id + hash and support size and extension options.

javascript
import { cdnAvatarURL, cdnBannerURL } from '@erinjs/core';

// From REST response
const userData = await client.rest.get(Routes.user(userId));
const avatarUrl = cdnAvatarURL(userData.id, userData.avatar, { size: 256 });
const bannerUrl = cdnBannerURL(userData.id, profile?.banner ?? null, { size: 512 });

// Or use User: client.getOrCreateUser(userData) then user.displayAvatarURL()
const user = client.getOrCreateUser(userData);
const avatarUrl2 = user.displayAvatarURL({ size: 256 });

Guild member and webhook avatars

GuildMember has displayAvatarURL() (guild avatar or fallback to user) and bannerURL(). Webhook has avatarURL().

javascript
// Member avatar (guild-specific or user fallback)
const memberAvatar = member.displayAvatarURL({ size: 128 });

// Webhook avatar
const webhookAvatar = webhook.avatarURL({ size: 64 });

Released under the Apache-2.0 License.