apps/api/src/discord.ts (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
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<T>(
url: string,
token: string,
options?: RequestInit,
): Promise<T | RESTError> {
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,
});
};
|