Skip to main content

Class: PreconditionContainerArray

An IPreconditionContainer that defines an array of multiple IPreconditionContainers.

By default, array containers run either of two conditions: AND and OR (PreconditionRunCondition), the top level will always default to AND, where the nested one flips the logic (OR, then children arrays are AND, then OR...).

This allows ['Connect', ['Moderator', ['DJ', 'SongAuthor']]] to become a thrice-nested precondition container, where:

  • Level 1: [Single(Connect), Array] runs AND, both containers must return a successful value.
  • Level 2: [Single(Moderator), Array] runs OR, either container must return a successful value.
  • Level 3: [Single(DJ), Single(SongAuthor)] runs AND, both containers must return a successful value.

In other words, it is identical to doing:

Connect && (Moderator || (DJ && SongAuthor));

Remark​

More advanced logic can be accomplished by adding more IPreconditionConditions (e.g. other operators), see PreconditionContainerArray.conditions for more information.

Since​

1.0.0

Implements​

Constructors​

new PreconditionContainerArray()​

new PreconditionContainerArray(data: PreconditionArrayResolvable, parent: null | PreconditionContainerArray): PreconditionContainerArray

Parameters​

ParameterTypeDefault value
dataPreconditionArrayResolvable[]
parentnull | PreconditionContainerArraynull

Returns​

PreconditionContainerArray

Defined in​

projects/framework/src/lib/utils/preconditions/PreconditionContainerArray.ts:127

Properties​

entries​

readonly entries: IPreconditionContainer[]

The IPreconditionContainers the array holds.

Since​

1.0.0

Defined in​

projects/framework/src/lib/utils/preconditions/PreconditionContainerArray.ts:119


mode​

readonly mode: PreconditionRunMode

The mode at which this precondition will run.

Since​

1.0.0

Defined in​

projects/framework/src/lib/utils/preconditions/PreconditionContainerArray.ts:113


runCondition​

readonly runCondition: PreconditionRunCondition

The PreconditionRunCondition that defines how entries must be handled.

Since​

1.0.0

Defined in​

projects/framework/src/lib/utils/preconditions/PreconditionContainerArray.ts:125


conditions​

readonly static conditions: Collection<PreconditionRunCondition, IPreconditionCondition>

The preconditions to be run. Extra ones can be added by augmenting PreconditionRunCondition and then inserting IPreconditionConditions.

Since​

1.0.0

Example​

// Adding more kinds of conditions

// Set the new condition:
PreconditionContainerArray.conditions.set(2, PreconditionConditionRandom);

// Augment Sapphire to add the new condition, in case of a JavaScript
// project, this can be moved to an `Augments.d.ts` (or any other name)
// file somewhere:
declare module '@sapphire/framework' {
export enum PreconditionRunCondition {
Random = 2
}
}

Defined in​

projects/framework/src/lib/utils/preconditions/PreconditionContainerArray.ts:254

Accessors​

condition​

Get Signature​

get protected condition(): IPreconditionCondition

Retrieves a condition from PreconditionContainerArray.conditions, assuming existence.

Since​

1.0.0

Returns​

IPreconditionCondition

Defined in​

projects/framework/src/lib/utils/preconditions/PreconditionContainerArray.ts:229

Methods​

add()​

add(entry: IPreconditionContainer): this

Adds a new entry to the array.

Parameters​

ParameterTypeDescription
entryIPreconditionContainerThe value to add to the entries.

Returns​

this

Since​

1.0.0

Defined in​

projects/framework/src/lib/utils/preconditions/PreconditionContainerArray.ts:149


append()​

append(keyOrEntries)​

append(keyOrEntries: SimplePreconditionKeys | SimplePreconditionSingleResolvableDetails | PreconditionContainerArray): this

Parameters​
ParameterType
keyOrEntriesSimplePreconditionKeys | SimplePreconditionSingleResolvableDetails | PreconditionContainerArray
Returns​

this

Defined in​

projects/framework/src/lib/utils/preconditions/PreconditionContainerArray.ts:154

append(entry)​

append<K>(entry: PreconditionSingleResolvableDetails<K>): this

Type Parameters​
Type Parameter
K extends keyof Preconditions
Parameters​
ParameterType
entryPreconditionSingleResolvableDetails<K>
Returns​

this

Defined in​

projects/framework/src/lib/utils/preconditions/PreconditionContainerArray.ts:155


chatInputRun()​

chatInputRun(interaction: ChatInputCommandInteraction<CacheType>, command: ChatInputCommand, context: PreconditionContext): PreconditionContainerReturn

Runs the container.

Parameters​

ParameterTypeDescription
interactionChatInputCommandInteraction<CacheType>The interaction that ran this precondition.
commandChatInputCommandThe command the interaction invoked.
contextPreconditionContextThe context for the chat input precondition.

Returns​

PreconditionContainerReturn

Since​

3.0.0

Implementation of​

IPreconditionContainer.chatInputRun

Defined in​

projects/framework/src/lib/utils/preconditions/PreconditionContainerArray.ts:181


contextMenuRun()​

contextMenuRun(interaction: ContextMenuCommandInteraction<CacheType>, command: ContextMenuCommand, context: PreconditionContext): PreconditionContainerReturn

Runs the container.

Parameters​

ParameterTypeDescription
interactionContextMenuCommandInteraction<CacheType>The interaction that ran this precondition.
commandContextMenuCommandThe command the interaction invoked.
contextPreconditionContextThe context for the context menu precondition.

Returns​

PreconditionContainerReturn

Since​

3.0.0

Implementation of​

IPreconditionContainer.contextMenuRun

Defined in​

projects/framework/src/lib/utils/preconditions/PreconditionContainerArray.ts:198


messageRun()​

messageRun(message: Message<boolean>, command: MessageCommand, context: PreconditionContext): PreconditionContainerReturn

Runs the container.

Parameters​

ParameterTypeDescription
messageMessage<boolean>The message that ran this precondition.
commandMessageCommandThe command the message invoked.
contextPreconditionContextThe context for the message command precondition.

Returns​

PreconditionContainerReturn

Since​

1.0.0

Implementation of​

IPreconditionContainer.messageRun

Defined in​

projects/framework/src/lib/utils/preconditions/PreconditionContainerArray.ts:168


parse()​

protected parse(entries: Iterable<PreconditionEntryResolvable>): this

Parses the precondition entry resolvables, and adds them to the entries.

Parameters​

ParameterTypeDescription
entriesIterable<PreconditionEntryResolvable>The entries to parse.

Returns​

this

Since​

1.0.0

Defined in​

projects/framework/src/lib/utils/preconditions/PreconditionContainerArray.ts:213