diff options
Diffstat (limited to 'packages/interactions/register.ts')
| -rw-r--r-- | packages/interactions/register.ts | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/packages/interactions/register.ts b/packages/interactions/register.ts new file mode 100644 index 0000000..a23c9c8 --- /dev/null +++ b/packages/interactions/register.ts @@ -0,0 +1,70 @@ +import { + HOT_COMMAND, + NSFW_COMMAND, + ROLEPLAY_COMMAND, + TOP_COMMAND, + COMPLAIN_COMMAND, + APPEAL_COMMAND, + COLOURS_COMMAND, + ROLEPLAY_SERIOUS_COMMAND, + type DiscordCommand, +} from "./discord/commands.ts"; +import dotenv from "dotenv"; +import process from "node:process"; + +dotenv.config({ path: ".dev.vars" }); + +const token = process.env.DISCORD_TOKEN; +const applicationID = process.env.DISCORD_APPLICATION_ID; + +if (!token) + throw new Error("The DISCORD_TOKEN environment variable is required."); + +if (!applicationID) + throw new Error( + "The DISCORD_APPLICATION_ID environment variable is required.", + ); + +const url = `https://discord.com/api/v10/applications/${applicationID}/commands`; + +const commands: DiscordCommand[] = [ + HOT_COMMAND, + ROLEPLAY_COMMAND, + NSFW_COMMAND, + TOP_COMMAND, + COMPLAIN_COMMAND, + APPEAL_COMMAND, + COLOURS_COMMAND, + ROLEPLAY_SERIOUS_COMMAND, +]; + +const response = await fetch(url, { + headers: { + "Content-Type": "application/json", + Authorization: `Bot ${token}`, + }, + method: "PUT", + body: JSON.stringify(commands), +}); + +if (response.ok) { + console.log("Registered all commands"); + + const data = await response.json(); + + console.log(JSON.stringify(data, null, 2)); +} else { + console.error("Error registering commands"); + + let errorText = `Error registering commands \n ${response.url}: ${response.status} ${response.statusText}`; + + try { + const error = await response.text(); + + if (error) errorText = `${errorText} \n\n ${error}`; + } catch (error) { + console.error("Error reading body from request:", error); + } + + console.error(errorText); +} |