Create helper script for pushing commands

This commit is contained in:
Wroclaw 2023-05-08 09:15:34 +02:00
parent 8b4b35454b
commit ae3a5133b3
3 changed files with 43 additions and 2 deletions

View file

@ -5,7 +5,8 @@
"main": "./dist/index.js", "main": "./dist/index.js",
"scripts": { "scripts": {
"start": "tsc && node dist/index.js", "start": "tsc && node dist/index.js",
"test": "echo \"Error: no test specified\" && exit 1" "test": "echo \"Error: no test specified\" && exit 1",
"publishCommands": "tsc && node dist/scripts/pushCommands.js"
}, },
"author": "Wroclaw", "author": "Wroclaw",
"license": "MIT", "license": "MIT",

View file

@ -34,4 +34,4 @@ discord.on("messageCreate", async message => {
queueRequest(message); queueRequest(message);
}); });
discord.login(config.tokens.Discord); if (require.main === module) discord.login(config.tokens.Discord);

View file

@ -0,0 +1,40 @@
// https://discordjs.guide/creating-your-bot/command-deployment.html#guild-commands
import { REST, RESTGetAPIOAuth2CurrentApplicationResult, RESTPostAPIApplicationCommandsJSONBody, Routes } from "discord.js";
import config from "../config";
import requireDirectory from "require-directory";
import Command from "../command";
const post: RESTPostAPIApplicationCommandsJSONBody[] = [];
const guildId = process.argv.slice(2)[0];
requireDirectory<{default: Command}, void>(module, "../commands", {
visit: function (obj) {
console.log(obj);
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
post.push(new obj.default().toRESTPostApplicationCommands());
},
});
const rest = new REST().setToken(config.tokens.Discord);
(async () => {
const me = await rest.get(Routes.oauth2CurrentApplication()) as RESTGetAPIOAuth2CurrentApplicationResult;
console.log(`Started refreshing ${post.length} application commands.`);
if (guildId && guildId != "")
await rest.put(
Routes.applicationGuildCommands(me.id, guildId),
{ body: post },
);
else {
await rest.put(
Routes.applicationCommands(me.id),
{ body: post },
);
}
console.log("Refreshed successfully");
})().catch( e => {
console.error(e);
});