Skip to main content

Class: abstract Argument<T, Options>

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).

Examples

// TypeScript:
import { Argument } 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: Argument.LoaderContext) {
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;
}
}
// 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.'
});
}
}
}

Extends

  • AliasPiece<Options, "arguments">

Type Parameters

Type ParameterDefault type
Tunknown
Options extends OptionsOptions

Implements

Constructors

new Argument()

new Argument<T, Options>(context: LoaderContext, options: Options): Argument<T, Options>

Parameters

ParameterType
contextLoaderContext
optionsOptions

Returns

Argument<T, Options>

Overrides

AliasPiece<Options, 'arguments'>.constructor

Defined in

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

Methods

error()

error(options: Omit<Options<T>, "argument">): Result<T>

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

Parameters

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

Returns

Result<T>

Defined in

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


ok()

ok(value: T): Result<T>

Wraps a value into a successful value.

Parameters

ParameterTypeDescription
valueTThe value to wrap.

Returns

Result<T>

Defined in

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


run()

abstract run(parameter: string, context: Context<T>): AwaitableResult<T>

The method which is called when invoking the argument.

Parameters

ParameterTypeDescription
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:112