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

constructor

new PreconditionContainerArray(data?, parent?)

Parameters

NameTypeDefault value
dataPreconditionArrayResolvable[]
parentnull | PreconditionContainerArraynull

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

Static Readonly 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:247

Accessors

condition

Protected get 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:222

Methods

add

add(entry): PreconditionContainerArray

Adds a new entry to the array.

since 1.0.0

Parameters

NameTypeDescription
entryIPreconditionContainerThe value to add to the entries.

Returns

PreconditionContainerArray

Defined in

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


append

append(keyOrEntries): PreconditionContainerArray

Parameters

NameType
keyOrEntriesPreconditionContainerArray | SimplePreconditionKeys | SimplePreconditionSingleResolvableDetails

Returns

PreconditionContainerArray

Defined in

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

append<K>(entry): PreconditionContainerArray

Type parameters

NameType
Kextends keyof Preconditions

Parameters

NameType
entryPreconditionSingleResolvableDetails<K>

Returns

PreconditionContainerArray

Defined in

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


chatInputRun

chatInputRun(interaction, command, context?): PreconditionContainerReturn

Runs the container.

since 3.0.0

Parameters

NameTypeDescription
interactionCommandInteraction<CacheType>The interaction that ran this precondition.
commandChatInputCommandThe command the interaction invoked.
contextPreconditionContext-

Returns

PreconditionContainerReturn

Implementation of

IPreconditionContainer.chatInputRun

Defined in

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


contextMenuRun

contextMenuRun(interaction, command, context?): PreconditionContainerReturn

Runs the container.

since 3.0.0

Parameters

NameTypeDescription
interactionContextMenuInteraction<CacheType>The interaction that ran this precondition.
commandContextMenuCommandThe command the interaction invoked.
contextPreconditionContext-

Returns

PreconditionContainerReturn

Implementation of

IPreconditionContainer.contextMenuRun

Defined in

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


messageRun

messageRun(message, command, context?): PreconditionContainerReturn

Runs the container.

since 1.0.0

Parameters

NameTypeDescription
messageMessage<boolean>The message that ran this precondition.
commandMessageCommandThe command the message invoked.
contextPreconditionContext-

Returns

PreconditionContainerReturn

Implementation of

IPreconditionContainer.messageRun

Defined in

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


parse

Protected parse(entries): PreconditionContainerArray

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

since 1.0.0

Parameters

NameTypeDescription
entriesIterable<PreconditionEntryResolvable>The entries to parse.

Returns

PreconditionContainerArray

Defined in

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