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?): PreconditionContainerArray

Parameters

NameTypeDefault 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

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:254

Accessors

condition

get condition(): IPreconditionCondition

Retrieves a condition from PreconditionContainerArray.conditions, assuming existence.

Returns

IPreconditionCondition

Since

1.0.0

Defined in

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

Methods

add

add(entry): this

Adds a new entry to the array.

Parameters

NameTypeDescription
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): this

Parameters

NameType
keyOrEntriesSimplePreconditionKeys | SimplePreconditionSingleResolvableDetails | PreconditionContainerArray

Returns

this

Defined in

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

append<K>(entry): this

Type parameters

NameType
Kextends keyof Preconditions

Parameters

NameType
entryPreconditionSingleResolvableDetails<K>

Returns

this

Defined in

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


chatInputRun

chatInputRun(interaction, command, context?): PreconditionContainerReturn

Runs the container.

Parameters

NameTypeDescription
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, command, context?): PreconditionContainerReturn

Runs the container.

Parameters

NameTypeDescription
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, command, context?): PreconditionContainerReturn

Runs the container.

Parameters

NameTypeDescription
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

parse(entries): this

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

Parameters

NameTypeDescription
entriesIterable<PreconditionEntryResolvable>The entries to parse.

Returns

this

Since

1.0.0

Defined in

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