Command: Add integration and context types
While discord api supports that, discord api types, which discord.js depends on does not.
This commit is contained in:
parent
0e5c8d22cc
commit
63cb52e7f4
2 changed files with 59 additions and 3 deletions
|
@ -4,13 +4,25 @@ import { REST, RESTGetAPIOAuth2CurrentApplicationResult, RESTPostAPIApplicationC
|
|||
import { config } from "../src/index";
|
||||
import requireDirectory from "require-directory";
|
||||
|
||||
import Command from "../src/command";
|
||||
import
|
||||
Command
|
||||
, {
|
||||
ApplicationIntegrationType
|
||||
, InteractionContextTypes
|
||||
, InteractionTypeMap
|
||||
} from "../src/command";
|
||||
|
||||
const post: RESTPostAPIApplicationCommandsJSONBody[] = [];
|
||||
|
||||
const guildId = process.argv.slice(2)[0];
|
||||
const importedCommands = requireDirectory(module, "../src/commands");
|
||||
|
||||
function isGuildCommand(command: Command<keyof InteractionTypeMap>): boolean {
|
||||
// guild Commmand is when it's a guild install and context is guild (and these are defaults if not provided)
|
||||
return (command.integration_types?.includes(ApplicationIntegrationType.Guild_Install) ?? true)
|
||||
&& (command.contexts?.includes(InteractionContextTypes.Guild) ?? true);
|
||||
}
|
||||
|
||||
for (const obj in importedCommands) {
|
||||
try {
|
||||
const allExports = importedCommands[obj] as {default: unknown};
|
||||
|
@ -19,6 +31,10 @@ for (const obj in importedCommands) {
|
|||
// @ts-expect-error
|
||||
const constructedExport = new defaultExport() as unknown;
|
||||
if (!(constructedExport instanceof Command)) throw new Error(`${obj}'s default does not extends Command`);
|
||||
if (guildId && guildId !== "" && isGuildCommand(constructedExport as Command<keyof InteractionTypeMap>)) {
|
||||
console.log(`Skipping ${obj} because it's not a guild command`);
|
||||
continue;
|
||||
}
|
||||
post.push(constructedExport.toRESTPostApplicationCommands());
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue