Skip to main content

Class: PreconditionContainerArray

Defined in: projects/framework/src/lib/utils/preconditions/PreconditionContainerArray.ts:108

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​

Constructor​

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

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

Parameters​

ParameterTypeDefault value
dataPreconditionArrayResolvable[]
parentnull | PreconditionContainerArraynull

Returns​

PreconditionContainerArray

Properties​

entries​

readonly entries: IPreconditionContainer[]

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

The IPreconditionContainers the array holds.

Since​

1.0.0


mode​

readonly mode: PreconditionRunMode

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

The mode at which this precondition will run.

Since​

1.0.0


runCondition​

readonly runCondition: PreconditionRunCondition

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

The PreconditionRunCondition that defines how entries must be handled.

Since​

1.0.0


conditions​

readonly static conditions: Collection<PreconditionRunCondition, IPreconditionCondition>

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

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
}
}

Accessors​

condition​

Get Signature​

get protected condition(): IPreconditionCondition

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

Retrieves a condition from PreconditionContainerArray.conditions, assuming existence.

Since​

1.0.0

Returns​

IPreconditionCondition

Methods​

add()​

add(entry: IPreconditionContainer): this

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

Adds a new entry to the array.

Parameters​

ParameterTypeDescription
entryIPreconditionContainerThe value to add to the entries.

Returns​

this

Since​

1.0.0


append()​

Call Signature​

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

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

Parameters​
ParameterType
keyOrEntriesSimplePreconditionKeys | SimplePreconditionSingleResolvableDetails | PreconditionContainerArray
Returns​

this

Call Signature​

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

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

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

this


chatInputRun()​

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

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

Runs the container.

Parameters​

ParameterTypeDescription
interactionChatInputCommandInteractionThe 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


contextMenuRun()​

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

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

Runs the container.

Parameters​

ParameterTypeDescription
interactionContextMenuCommandInteractionThe 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


messageRun()​

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

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

Runs the container.

Parameters​

ParameterTypeDescription
messageMessageThe 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


parse()​

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

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

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