Wroclaw
a186ba9e80
this should reduce errors when reading commands also this won't fail if reading one command fails
50 lines
1.7 KiB
TypeScript
50 lines
1.7 KiB
TypeScript
// https://discordjs.guide/creating-your-bot/command-deployment.html#guild-commands
|
|
|
|
import { REST, RESTGetAPIOAuth2CurrentApplicationResult, RESTPostAPIApplicationCommandsJSONBody, Routes } from "discord.js";
|
|
import { config } from "../src/index";
|
|
import requireDirectory from "require-directory";
|
|
|
|
import Command from "../src/command";
|
|
|
|
const post: RESTPostAPIApplicationCommandsJSONBody[] = [];
|
|
|
|
const guildId = process.argv.slice(2)[0];
|
|
const importedCommands = requireDirectory(module, "../src/commands");
|
|
|
|
for (const obj in importedCommands) {
|
|
try {
|
|
const allExports = importedCommands[obj] as {default: unknown};
|
|
const defaultExport = allExports.default;
|
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
// @ts-expect-error
|
|
const constructedExport = new defaultExport() as unknown;
|
|
if (!(constructedExport instanceof Command)) throw new Error(`${obj}'s default does not extends Command`);
|
|
post.push(constructedExport.toRESTPostApplicationCommands());
|
|
} catch (e) {
|
|
console.error(e);
|
|
}
|
|
}
|
|
|
|
const rest = new REST().setToken(config.tokens.Discord);
|
|
|
|
(async () => {
|
|
const me = await rest.get(Routes.oauth2CurrentApplication()) as RESTGetAPIOAuth2CurrentApplicationResult;
|
|
if (guildId && guildId !== "") {
|
|
console.log(`Started refreshing ${post.length} application guild (${guildId}) commands.`);
|
|
await rest.put(
|
|
Routes.applicationGuildCommands(me.id, guildId),
|
|
{ body: post },
|
|
);
|
|
} else {
|
|
console.log(`Started refreshing ${post.length} application global commands.`);
|
|
await rest.put(
|
|
Routes.applicationCommands(me.id),
|
|
{ body: post },
|
|
);
|
|
}
|
|
console.log("Refreshed successfully");
|
|
process.exit(0);
|
|
})().catch( e => {
|
|
console.error(e);
|
|
process.exit(1);
|
|
});
|