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
| Parameter | Type | Default value |
|---|---|---|
data | PreconditionArrayResolvable | [] |
parent | null | PreconditionContainerArray | null |
Returns
PreconditionContainerArray
Properties
entries
readonlyentries:IPreconditionContainer[]
Defined in: projects/framework/src/lib/utils/preconditions/PreconditionContainerArray.ts:119
The IPreconditionContainers the array holds.
Since
1.0.0
mode
readonlymode: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
readonlyrunCondition: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
readonlystaticconditions: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
protectedcondition():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
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
| Parameter | Type | Description |
|---|---|---|
entry | IPreconditionContainer | The 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
| Parameter | Type |
|---|---|
keyOrEntries | SimplePreconditionKeys | 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
| Parameter | Type |
|---|---|
entry | PreconditionSingleResolvableDetails<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
| Parameter | Type | Description |
|---|---|---|
interaction | ChatInputCommandInteraction | The interaction that ran this precondition. |
command | ChatInputCommand | The command the interaction invoked. |
context | PreconditionContext | The context for the chat input precondition. |
Returns
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
| Parameter | Type | Description |
|---|---|---|
interaction | ContextMenuCommandInteraction | The interaction that ran this precondition. |
command | ContextMenuCommand | The command the interaction invoked. |
context | PreconditionContext | The context for the context menu precondition. |
Returns
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
| Parameter | Type | Description |
|---|---|---|
message | Message | The message that ran this precondition. |
command | MessageCommand | The command the message invoked. |
context | PreconditionContext | The context for the message command precondition. |
Returns
Since
1.0.0
Implementation of
IPreconditionContainer.messageRun
parse()
protectedparse(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
| Parameter | Type | Description |
|---|---|---|
entries | Iterable<PreconditionEntryResolvable> | The entries to parse. |
Returns
this
Since
1.0.0