Spaces:
Paused
Paused
| import { resolveFetch } from "../infra/fetch.js"; | |
| const PLURALKIT_API_BASE = "https://api.pluralkit.me/v2"; | |
| export type DiscordPluralKitConfig = { | |
| enabled?: boolean; | |
| token?: string; | |
| }; | |
| export type PluralKitSystemInfo = { | |
| id: string; | |
| name?: string | null; | |
| tag?: string | null; | |
| }; | |
| export type PluralKitMemberInfo = { | |
| id: string; | |
| name?: string | null; | |
| display_name?: string | null; | |
| }; | |
| export type PluralKitMessageInfo = { | |
| id: string; | |
| original?: string | null; | |
| sender?: string | null; | |
| system?: PluralKitSystemInfo | null; | |
| member?: PluralKitMemberInfo | null; | |
| }; | |
| export async function fetchPluralKitMessageInfo(params: { | |
| messageId: string; | |
| config?: DiscordPluralKitConfig; | |
| fetcher?: typeof fetch; | |
| }): Promise<PluralKitMessageInfo | null> { | |
| if (!params.config?.enabled) { | |
| return null; | |
| } | |
| const fetchImpl = resolveFetch(params.fetcher); | |
| if (!fetchImpl) { | |
| return null; | |
| } | |
| const headers: Record<string, string> = {}; | |
| if (params.config.token?.trim()) { | |
| headers.Authorization = params.config.token.trim(); | |
| } | |
| const res = await fetchImpl(`${PLURALKIT_API_BASE}/messages/${params.messageId}`, { | |
| headers, | |
| }); | |
| if (res.status === 404) { | |
| return null; | |
| } | |
| if (!res.ok) { | |
| const text = await res.text().catch(() => ""); | |
| const detail = text.trim() ? `: ${text.trim()}` : ""; | |
| throw new Error(`PluralKit API failed (${res.status})${detail}`); | |
| } | |
| return (await res.json()) as PluralKitMessageInfo; | |
| } | |