import type { RESTError } from "discord-api-types/v10"; import config from "@stealth-developers/config"; import { REST } from "discord.js"; export interface OAuth2ErrorResponse { error: | "invalid_grant" | "invalid_request" | "invalid_client" | "unsupported_grant_type" | "invalid_scope"; error_description?: string; } export const client = new REST({ version: "10", }); 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) => { console.log("Creating client with token:", token); return new REST({ version: "10", }).setToken(token); }; export const isOAuth2Error = (data: unknown): data is OAuth2ErrorResponse => { return typeof data === "object" && data !== null && "error" in data; }; export const isError = (data: unknown): data is RESTError => { return typeof data === "object" && data !== null && "code" in data; }; client.setToken(config.discord.token);