import type { Guild, OAuth2Guild } from "discord.js"; import { type Actor, upsertActor, upsertGuild } from "@stealth-developers/db"; import { client } from "@/client"; import { logger } from "@/lib"; const GUILD_ACTORS = new Map(); export async function upsertGuildActor(guild: OAuth2Guild | Guild) { const member = await client.guilds.cache.get(guild.id)?.members.fetchMe(); if (!member) return; const dbGuild = await upsertGuild({ discordId: guild.id, icon: guild.iconURL(), name: guild.name, }); if (!dbGuild) return; const actor = await upsertActor({ moderator: true, guild: { discordId: guild.id, icon: guild.iconURL(), name: guild.name, }, user: { discordId: member.user.id, username: member.user.username, displayName: member.displayName, avatar: member.user.avatarURL(), }, }); if (actor) GUILD_ACTORS.set(guild.id, actor.actor); logger.debug({ actor }, `upserted guild actor for ${guild.id} (${guild.name})`); return actor; } export function getGuildActor(guildId: string) { return GUILD_ACTORS.get(guildId); }