Skip to content

Commit

Permalink
feat(CommandInteractionOptionResolver): add sub-command required opti…
Browse files Browse the repository at this point in the history
…on (#6165)
  • Loading branch information
memikri committed Jul 23, 2021
1 parent c8ca7bf commit 690c121
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 8 deletions.
14 changes: 8 additions & 6 deletions src/structures/CommandInteractionOptionResolver.js
Expand Up @@ -97,21 +97,23 @@ class CommandInteractionOptionResolver {

/**
* Gets the selected sub-command.
* @returns {string} The name of the selected sub-command.
* @param {boolean} [required=true] Whether to throw an error if there is no sub-command.
* @returns {?string} The name of the selected sub-command, or null if not set and not required.
*/
getSubCommand() {
if (!this._subCommand) {
getSubCommand(required = true) {
if (required && !this._subCommand) {
throw new TypeError('COMMAND_INTERACTION_OPTION_NO_SUB_COMMAND');
}
return this._subCommand;
}

/**
* Gets the selected sub-command group.
* @returns {string} The name of the selected sub-command group.
* @param {boolean} [required=true] Whether to throw an error if there is no sub-command group.
* @returns {?string} The name of the selected sub-command group, or null if not set and not required.
*/
getSubCommandGroup() {
if (!this._group) {
getSubCommandGroup(required = true) {
if (required && !this._group) {
throw new TypeError('COMMAND_INTERACTION_OPTION_NO_SUB_COMMAND_GROUP');
}
return this._group;
Expand Down
7 changes: 5 additions & 2 deletions typings/index.d.ts
Expand Up @@ -446,8 +446,11 @@ export class CommandInteractionOptionResolver {

public get(name: string, required: true): CommandInteractionOption;
public get(name: string, required?: boolean): CommandInteractionOption | null;
public getSubCommand(): string;
public getSubCommandGroup(): string;

public getSubCommand(required?: true): string;
public getSubCommand(required: boolean): string | null;
public getSubCommandGroup(required?: true): string;
public getSubCommandGroup(required: boolean): string | null;
public getBoolean(name: string, required: true): boolean;
public getBoolean(name: string, required?: boolean): boolean | null;
public getChannel(name: string, required: true): NonNullable<CommandInteractionOption['channel']>;
Expand Down
7 changes: 7 additions & 0 deletions typings/index.ts
Expand Up @@ -669,6 +669,13 @@ client.on('interactionCreate', async interaction => {
assertType<string>(interaction.options.getString('name', true));

assertType<string>(interaction.options.getSubCommand());
assertType<string>(interaction.options.getSubCommand(true));
assertType<string | null>(interaction.options.getSubCommand(booleanValue));
assertType<string | null>(interaction.options.getSubCommand(false));

assertType<string>(interaction.options.getSubCommandGroup());
assertType<string>(interaction.options.getSubCommandGroup(true));
assertType<string | null>(interaction.options.getSubCommandGroup(booleanValue));
assertType<string | null>(interaction.options.getSubCommandGroup(false));
}
});

0 comments on commit 690c121

Please sign in to comment.