diff --git a/src/structures/cdn.ts b/src/structures/cdn.ts index 83ff27c..c7b3bc3 100644 --- a/src/structures/cdn.ts +++ b/src/structures/cdn.ts @@ -10,4 +10,4 @@ export const ImageURL = ( if (url.includes('a_')) { return `${url}.${format === undefined ? 'gif' : format}?size=${size}` } else return `${url}.${format === 'gif' ? 'png' : format}?size=${size}` -} +} \ No newline at end of file diff --git a/src/structures/user.ts b/src/structures/user.ts index d3e9f19..6823704 100644 --- a/src/structures/user.ts +++ b/src/structures/user.ts @@ -2,6 +2,9 @@ import { Client } from '../models/client.ts' import { UserPayload } from '../types/user.ts' import { UserFlagsManager } from '../utils/userFlags.ts' import { Base } from './base.ts' +import { ImageURL } from './cdn.ts' +import { ImageSize, ImageFormats } from '../types/cdn.ts' +import { DEFAULT_USER_AVATAR, USER_AVATAR } from '../types/endpoint.ts' export class User extends Base { id: string @@ -37,6 +40,16 @@ export class User extends Base { return `<@${this.id}>` } + avatarURL(format: ImageFormats = 'png', size: ImageSize = 512): string { + return this.avatar != null + ? `${ImageURL(USER_AVATAR(this.id, this.avatar), format, size)}` + : `${DEFAULT_USER_AVATAR(String(Number(this.discriminator) % 5))}.png` + } + + get defaultAvatarURL(): string { + return `${DEFAULT_USER_AVATAR(String(Number(this.discriminator) % 5))}.png` + } + constructor(client: Client, data: UserPayload) { super(client, data) this.id = data.id