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

new PreconditionContainerArray()

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