import { GatewayActivity, PresenceUpdateStatus, UserFlags, UserPremiumType,} from "../../deps.ts";import { Client } from "../Client.ts";import { Base } from "./Base.ts";
export class User extends Base { id: string; username: string; discriminator: string; avatar: string | null; flags?: UserFlags | undefined; premium_type?: UserPremiumType | undefined; public_flags?: UserFlags | undefined;
presence?: | { status?: PresenceUpdateStatus; activities?: GatewayActivity[]; } | undefined;
avatar_decoration?: string | null;
constructor(client: Client, props: Record<string, any>) { super(client); Object.assign(this, props);
this.id = props.id; this.username = props.username; this.discriminator = props.discriminator; this.avatar = props.avatar; }
get avatarUrl() { const isAnimated = this.avatar && this.avatar.startsWith("a_"); return this.avatar ? `${this.client.cdnHost}/avatars/${this.id}/${this.avatar}${ isAnimated ? ".gif" : ".png" }` : this.defaultAvatarUrl; }
get defaultAvatarUrl() { return `${this.client.cdnHost}/embed/avatars/${ parseInt(this.discriminator.substring(1)) % 5 }.png`; }
get tag() { return `${this.username}#${this.discriminator}`; }}