Skip to main content

Class: Argument<T, O>

The base argument class. This class is abstract and is to be extended by subclasses implementing the methods. In Sapphire's workflow, arguments are called when using Args's methods (usually used inside Commands by default).

Example

// TypeScript:
import { Argument, PieceContext } from '@sapphire/framework';
import { URL } from 'node:url';

// Define a class extending `Argument`, then export it.
// NOTE: You can use `export default` or `export =` too.
export class CoreArgument extends Argument<URL> {
public constructor(context: PieceContext) {
super(context, { name: 'hyperlink', aliases: ['url'] });
}

public run(argument: string, context: Argument.Context): Argument.Result<URL> {
try {
return this.ok(new URL(argument));
} catch {
return this.error({
parameter: argument,
context,
identifier: 'ArgumentHyperlinkInvalidURL',
message: 'The argument did not resolve to a valid URL.'
});
}
}
}

// Augment the ArgType structure so `args.pick('url')`, `args.repeat('url')`
// and others have a return type of `URL`.
declare module '@sapphire/framework' {
export interface ArgType {
url: URL;
}
}

Example

// JavaScript:
const { Argument } = require('@sapphire/framework');

// Define a class extending `Argument`, then export it.
module.exports = class CoreArgument extends Argument {
constructor(context) {
super(context, { name: 'hyperlink', aliases: ['url'] });
}

run(argument, context) {
try {
return this.ok(new URL(argument));
} catch {
return this.error({
parameter: argument,
context,
identifier: 'ArgumentHyperlinkInvalidURL',
message: 'The argument did not resolve to a valid URL.'
});
}
}
}

Type parameters

NameType
Tunknown
Oextends Options = Options

Hierarchy

Implements

Constructors

constructor

new Argument<T, O>(context, options?)

Type parameters

NameType
Tunknown
Oextends ArgumentOptions<O> = ArgumentOptions

Parameters

NameType
contextPieceContext
options?AliasPieceOptions

Inherited from

AliasPiece.constructor

Defined in

node_modules/@sapphire/pieces/dist/index.d.ts:688

Properties

aliases

aliases: readonly string[]

The aliases for the piece.

Inherited from

AliasPiece.aliases

Defined in

node_modules/@sapphire/pieces/dist/index.d.ts:687


enabled

enabled: boolean

Whether or not the piece is enabled.

Inherited from

AliasPiece.enabled

Defined in

node_modules/@sapphire/pieces/dist/index.d.ts:450


location

Readonly location: PieceLocation

The location metadata for the piece's file.

Inherited from

AliasPiece.location

Defined in

node_modules/@sapphire/pieces/dist/index.d.ts:442


name

Readonly name: string

The name of the piece.

Implementation of

IArgument.name

Inherited from

AliasPiece.name

Defined in

node_modules/@sapphire/pieces/dist/index.d.ts:446


options

Readonly options: O

The raw options passed to this Piece

Inherited from

AliasPiece.options

Defined in

node_modules/@sapphire/pieces/dist/index.d.ts:454


store

store: ArgumentStore

The ArgumentStore that contains this Argument.

Overrides

AliasPiece.store

Defined in

projects/framework/src/lib/structures/Argument.ts:109

Accessors

container

get container(): Container

A reference to the Container object for ease of use.

See

container

Returns

Container

Inherited from

AliasPiece.container

Defined in

node_modules/@sapphire/pieces/dist/index.d.ts:460

Methods

error

error(options): Result<T>

Constructs an Err result containing an ArgumentError with a custom type.

Parameters

NameTypeDescription
optionsOmit<Options<T>, "argument">The options to pass to the ArgumentError.

Returns

Result<T>

Defined in

projects/framework/src/lib/structures/Argument.ts:125


ok

ok(value): Result<T>

Wraps a value into a successful value.

Parameters

NameTypeDescription
valueTThe value to wrap.

Returns

Result<T>

Defined in

projects/framework/src/lib/structures/Argument.ts:117


onLoad

onLoad(): unknown

Per-piece listener that is called when the piece is loaded into the store. Useful to set-up asynchronous initialization tasks.

Returns

unknown

Inherited from

AliasPiece.onLoad

Defined in

node_modules/@sapphire/pieces/dist/index.d.ts:465


onUnload

onUnload(): unknown

Per-piece listener that is called when the piece is unloaded from the store. Useful to set-up clean-up tasks.

Returns

unknown

Inherited from

AliasPiece.onUnload

Defined in

node_modules/@sapphire/pieces/dist/index.d.ts:470


reload

reload(): Promise<void>

Reloads the piece by loading the same path in the store.

Returns

Promise<void>

Inherited from

AliasPiece.reload

Defined in

node_modules/@sapphire/pieces/dist/index.d.ts:478


run

Abstract run(parameter, context): AwaitableResult<T>

The method which is called when invoking the argument.

Parameters

NameTypeDescription
parameterstringThe string parameter to parse.
contextContext<T>The context for the method call, contains the message, command, and other options.

Returns

AwaitableResult<T>

Implementation of

IArgument.run

Defined in

projects/framework/src/lib/structures/Argument.ts:111


toJSON

toJSON(): AliasPieceJSON

Defines the JSON.stringify behavior of this alias piece.

Returns

AliasPieceJSON

Inherited from

AliasPiece.toJSON

Defined in

node_modules/@sapphire/pieces/dist/index.d.ts:692


unload

unload(): Promise<void>

Unloads and disables the piece.

Returns

Promise<void>

Inherited from

AliasPiece.unload

Defined in

node_modules/@sapphire/pieces/dist/index.d.ts:474