import type { DiscordMemberWithUser, Snowflake } from "./deps.ts"; import type { SessionCache } from "./mod.ts"; import type { CachedUser } from "./users.ts"; import { Member } from "./deps.ts"; export interface CachedMember extends Omit { userId: Snowflake; user?: CachedUser; } export function memberBootstrapper(cache: SessionCache, member: DiscordMemberWithUser, guildId: Snowflake) { cache.guilds.retrieve(guildId, (guild) => { guild.members.set( member.user.id, Object.assign( new Member(cache.session, member, guildId), { userId: member.user.id, get user(): CachedUser | undefined { return cache.users.get(this.userId); }, }, ), ); }); }