import type { RESTError } from "discord-api-types/v10"; import { RESTClient } from "@purrkit/rest"; import config from "@stealth-developers/config"; export interface OAuth2ErrorResponse { error: | "invalid_grant" | "invalid_request" | "invalid_client" | "unsupported_grant_type" | "invalid_scope"; error_description?: string; } export const client = RESTClient({ token: config.discord.token, }); export async function makeRequest( url: string, token: string, options?: RequestInit, ): Promise { const response = await fetch(url, { ...options, headers: { ...options?.headers, Authorization: `Bearer ${token}`, }, }); if (!response.ok) return (await response.json()) as RESTError; return (await response.json()) as T; } export const createClient = (token: string) => { const tokenType = token.startsWith("Bot") ? "Bot" : "Bearer"; const endToken = token.replace(/^(Bot|Bearer)\s+/, ""); return RESTClient({ token: endToken, tokenType, }); };