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
Name | Type | Default value |
---|---|---|
data | PreconditionArrayResolvable | [] |
parent | null | PreconditionContainerArray | null |
Returns
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
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
Name | Type | Description |
---|---|---|
entry | IPreconditionContainer | The 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
Name | Type |
---|---|
keyOrEntries | SimplePreconditionKeys | SimplePreconditionSingleResolvableDetails | PreconditionContainerArray |
Returns
this
Defined in
projects/framework/src/lib/utils/preconditions/PreconditionContainerArray.ts:154
▸ append<K
>(entry
): this
Type parameters
Name | Type |
---|---|
K | extends keyof Preconditions |
Parameters
Name | Type |
---|---|
entry | PreconditionSingleResolvableDetails <K > |
Returns
this
Defined in
projects/framework/src/lib/utils/preconditions/PreconditionContainerArray.ts:155
chatInputRun
▸ chatInputRun(interaction
, command
, context?
): PreconditionContainerReturn
Runs the container.
Parameters
Name | Type | Description |
---|---|---|
interaction | ChatInputCommandInteraction <CacheType > | 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
Defined in
projects/framework/src/lib/utils/preconditions/PreconditionContainerArray.ts:181
contextMenuRun
▸ contextMenuRun(interaction
, command
, context?
): PreconditionContainerReturn
Runs the container.
Parameters
Name | Type | Description |
---|---|---|
interaction | ContextMenuCommandInteraction <CacheType > | 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
Defined in
projects/framework/src/lib/utils/preconditions/PreconditionContainerArray.ts:198
messageRun
▸ messageRun(message
, command
, context?
): PreconditionContainerReturn
Runs the container.
Parameters
Name | Type | Description |
---|---|---|
message | Message <boolean > | 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
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
Name | Type | Description |
---|---|---|
entries | Iterable <PreconditionEntryResolvable > | The entries to parse. |
Returns
this
Since
1.0.0
Defined in
projects/framework/src/lib/utils/preconditions/PreconditionContainerArray.ts:213