Skip to main content

Class: PaginatedMessage

@sapphire/discord.js-utilities.PaginatedMessage

This is a PaginatedMessage, a utility to paginate messages (usually embeds). You must either use this class directly or extend it.

PaginatedMessage uses MessageComponent buttons that perform the specified action when clicked. You can either use your own actions or the PaginatedMessage.defaultActions. PaginatedMessage.defaultActions is also static so you can modify these directly.

PaginatedMessage also uses pages via Messages.

example

const myPaginatedMessage = new PaginatedMessage();
// Once you have an instance of PaginatedMessage you can call various methods on it to add pages to it.
// For more details see each method's documentation.

myPaginatedMessage.addPageEmbed((embed) => {
embed
.setColor('#FF0000')
.setDescription('example description');

return embed;
});

myPaginatedMessage.addPageBuilder((builder) => {
const embed = new MessageEmbed()
.setColor('#FF0000')
.setDescription('example description');

return builder
.setContent('example content')
.setEmbed(embed);
});

myPaginatedMessage.addPageContent('Example');

myPaginatedMessage.run(message)

remark You can also provide a MessageEmbed template. This will be applied to every page. If a page itself has an embed then the two will be merged, with the content of the page's embed taking priority over the template.

Furthermore, if the template has a footer then it will be applied after the page index part of the footer with a space preceding the template. For example, when setting - Powered by Sapphire Framework the resulting footer will be 1/2 - Powered by Sapphire Framework

example

const myPaginatedMessage = new PaginatedMessage({
template: new MessageEmbed().setColor('#FF0000').setFooter('- Powered by Sapphire framework')
});

remark To utilize actions you can implement IPaginatedMessageAction into a class.

example

class ForwardAction implements IPaginatedMessageAction {
public id = '▢️';

public run({ handler }) {
if (handler.index !== handler.pages.length - 1) ++handler.index;
}
}

// You can also give the object directly.

const StopAction: IPaginatedMessageAction = {
customId: 'CustomStopAction',
run: ({ collector }) => {
collector.stop();
}
}

Hierarchy

Constructors

constructor

β€’ new PaginatedMessage(__namedParameters?)

Constructor for the PaginatedMessage class

Parameters

NameTypeDescription
__namedParametersPaginatedMessageOptionsThe PaginatedMessageOptions for this instance of the PaginatedMessage class

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:178

Properties

actions

β€’ actions: Map<string, PaginatedMessageAction>

The actions which are to be used.

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:131


collector

β€’ collector: null | InteractionCollector<MessageComponentInteraction<CacheType>> = null

The collector used for handling button clicks.

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:121


constructor

β€’ constructor: typeof PaginatedMessage

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:1153


embedFooterSeparator

β€’ embedFooterSeparator: string = PaginatedMessage.embedFooterSeparator

Custom separator to show after the page index in the embed footer. PaginatedMessage will automatically add a space ( ) after the given text. You do not have to add it yourself.

default PaginatedMessage.embedFooterSeparator (static property)

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:161


hasEmittedWarning

β€’ Protected hasEmittedWarning: boolean = false

Tracks whether a warning was already emitted for this PaginatedMessage

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:172


idle

β€’ idle: number

The amount of milliseconds to idle before the paginator is closed. Defaults to 20 minutes.

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:141


index

β€’ index: number = 0

The handler's current page/message index.

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:136


messages

β€’ messages: (null | PaginatedMessagePage)[] = []

The pages which were converted from PaginatedMessage.pages

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:126


pageIndexPrefix

β€’ pageIndexPrefix: string = PaginatedMessage.pageIndexPrefix

Custom text to show in front of the page index in the embed footer. PaginatedMessage will automatically add a space ( ) after the given text. You do not have to add it yourself.

default PaginatedMessage.pageIndexPrefix (static property)

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:154


pages

β€’ pages: PaginatedMessagePage[]

The pages to be converted to PaginatedMessage.messages

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:111


paginatedMessageData

β€’ Protected paginatedMessageData: null | Omit<PaginatedMessageMessageOptionsUnion, "components"> = null

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:163


response

β€’ response: null | Message<boolean> = null

The response message used to edit on page changes.

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:116


selectMenuOptions

β€’ Protected selectMenuOptions: PaginatedMessageSelectMenuOptionsFunction = PaginatedMessage.selectMenuOptions

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:165


template

β€’ template: PaginatedMessageMessageOptionsUnion

The template for this PaginatedMessage. You can use templates to set defaults that will apply to each and every page in the PaginatedMessage

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:147


wrongUserInteractionReply

β€’ Protected wrongUserInteractionReply: PaginatedMessageWrongUserInteractionReplyFunction = PaginatedMessage.wrongUserInteractionReply

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:167


defaultActions

β–ͺ Static defaultActions: PaginatedMessageAction[]

The default actions of this handler.

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:952


deletionStopReasons

β–ͺ Static deletionStopReasons: string[]

The reasons sent by InteractionCollector#end event when the message (or its owner) has been deleted.

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:1014


embedFooterSeparator

β–ͺ Static embedFooterSeparator: string = 'β€’'

Custom separator for the page index in the embed footer.

default "β€’"

remark To overwrite this property change it somewhere in a "setup" file, i.e. where you also call client.login() for your bot. Alternatively, you can also customize it on a per-PaginatedMessage basis by passing embedFooterSeparator in the options of the constructor.

example

import { PaginatedMessage } from '@sapphire/discord.js-utilities';

PaginatedMessage.embedFooterSeparator = '|';
// This will make the separator of the embed footer something like "Page 1/2 | Today at 4:20"

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:1044


handlers

β–ͺ Static Readonly handlers: Map<string, PaginatedMessage>

The current {@link InteractionCollector} handlers that are active. The key is the ID of of the author who sent the message that triggered this PaginatedMessage

This is to ensure that any given author can only trigger 1 PaginatedMessage. This is important for performance reasons, and users should not have more than 1 PaginatedMessage open at once.

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:1062


messages

β–ͺ Static Readonly messages: Map<string, PaginatedMessage>

The messages that are currently being handled by a PaginatedMessage The key is the ID of the message that triggered this PaginatedMessage

This is to ensure that only 1 PaginatedMessage can run on a specified message at once. This is important when having an editable commands solution.

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:1053


pageIndexPrefix

β–ͺ Static pageIndexPrefix: string = ''

Custom text to show in front of the page index in the embed footer. PaginatedMessage will automatically add a space ( ) after the given text. You do not have to add it yourself.

default ""

remark To overwrite this property change it somewhere in a "setup" file, i.e. where you also call client.login() for your bot.

example

import { PaginatedMessage } from '@sapphire/discord.js-utilities';

PaginatedMessage.pageIndexPrefix = 'Page';
// This will make the footer of the embed something like "Page 1/2"

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:1029


selectMenuOptions

β–ͺ Static selectMenuOptions: PaginatedMessageSelectMenuOptionsFunction

A generator for {@link MessageSelectOption} that will be used to generate the options for the {@link MessageSelectMenu}. We do not allow overwriting the {@link MessageSelectOption#value} property with this, as it is vital to how we handle select menu interactions.

param The index of the page to add to the {@link MessageSelectMenu}. We will add 1 to this number because our pages are 0 based, so this will represent the pages as seen by the user.

default

{
label: `Page ${pageIndex}`
}

remark To overwrite this property change it in a "setup" file prior to calling client.login() for your bot.

example

import { PaginatedMessage } from '@sapphire/discord.js-utilities';

PaginatedMessage.selectMenuOptions = (pageIndex) => ({
label: `Go to page: ${pageIndex}`,
description: 'This is a description'
});

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:1089


wrongUserInteractionReply

β–ͺ Static wrongUserInteractionReply: PaginatedMessageWrongUserInteractionReplyFunction

A generator for {@link MessageComponentInteraction#reply} that will be called and sent whenever an untargeted user interacts with one of the buttons. When modifying this it is recommended that the message is set to be ephemeral so only the user that is pressing the buttons can see them. Furthermore, we also recommend setting allowedMentions: { users: [], roles: [] }, so you don't have to worry about accidentally pinging anyone.

When setting just a string, we will add { ephemeral: true, allowedMentions: { users: [], roles: [] } } for you.

param The {@link User} this PaginatedMessage was intended for.

param The {@link User} that actually clicked the button.

default

{
content: `Please stop clicking the buttons on this message. They are only for ${Formatters.userMention(targetUser.id)}.`,
ephemeral: true,
allowedMentions: { users: [], roles: [] }
}

remark To overwrite this property change it in a "setup" file prior to calling client.login() for your bot.

example

import { PaginatedMessage } from '@sapphire/discord.js-utilities';

// We will add ephemeral and no allowed mention for string only overwrites
PaginatedMessage.wrongUserInteractionReply = (targetUser) =>
`These buttons are only for ${Formatters.userMention(targetUser.id)}. Press them as much as you want, but I won't do anything with your clicks.`;

example

import { PaginatedMessage } from '@sapphire/discord.js-utilities';
import { Formatters } from 'discord.js';

PaginatedMessage.wrongUserInteractionReply = (targetUser) => ({
content: `These buttons are only for ${Formatters.userMention(
targetUser.id
)}. Press them as much as you want, but I won't do anything with your clicks.`,
ephemeral: true,
allowedMentions: { users: [], roles: [] }
});

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:1133

Methods

addAction

β–Έ addAction(action): PaginatedMessage

Adds an action to the existing ones. This will be added as the last action.

Parameters

NameTypeDescription
actionPaginatedMessageActionThe action to add.

Returns

PaginatedMessage

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:266


addActions

β–Έ addActions(actions): PaginatedMessage

Adds actions to the existing ones. The order given is the order they will be used.

Parameters

NameTypeDescription
actionsPaginatedMessageAction[]The actions to add.

Returns

PaginatedMessage

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:257


addAsyncPageBuilder

β–Έ addAsyncPageBuilder(builder): PaginatedMessage

Adds a page to the existing ones asynchronously using a MessageBuilder. This wil be added as the last page.

example

const { PaginatedMessage } = require('@sapphire/discord.js-utilities');
const { MessageEmbed } = require('discord.js');

const paginatedMessage = new PaginatedMessage()
.addAsyncPageBuilder(async (builder) => {
const someRemoteData = await fetch('https://contoso.com/api/users');

const embed = new MessageEmbed()
.setColor('#FF0000')
.setDescription(someRemoteData.data);

return builder
.setContent('example content')
.setEmbed(embed);
});

Parameters

NameTypeDescription
builderMessageBuilder | (builder: MessageBuilder) => Promise<MessageBuilder>Either a callback whose first parameter is new MessageBuilder(), or an already constructed MessageBuilder

Returns

PaginatedMessage

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:385


addAsyncPageEmbed

β–Έ addAsyncPageEmbed(embed): PaginatedMessage

Adds a page to the existing ones asynchronously using a {@link MessageEmbed}. This wil be added as the last page.

example

const { PaginatedMessage } = require('@sapphire/discord.js-utilities');

const paginatedMessage = new PaginatedMessage()
.addAsyncPageEmbed(async (embed) => {
const someRemoteData = await fetch('https://contoso.com/api/users');

embed
.setColor('#FF0000')
.setDescription(someRemoteData.data);

return embed;
});

Parameters

NameTypeDescription
embedMessageEmbed | (builder: MessageEmbed) => Promise<MessageEmbed>Either a callback whose first parameter is new MessageEmbed(), or an already constructed {@link MessageEmbed}

Returns

PaginatedMessage

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:455


addAsyncPageEmbeds

β–Έ addAsyncPageEmbeds(embeds): PaginatedMessage

Adds a page to the existing ones using multiple {@link MessageEmbed}'s. This wil be added as the last page.

remark When using this with a callback this will construct 10 {@link MessageEmbed}'s in the callback parameters, regardless of how many are actually used. If this a performance impact you do not want to cope with then it is recommended to use PaginatedMessage.addPageBuilder instead, which will let you add as many embeds as you want, albeit manually

example

const { PaginatedMessage } = require('@sapphire/discord.js-utilities');

const paginatedMessage = new PaginatedMessage().addAsyncPageEmbeds(async (embed0, embed1, embed2) => {
const someRemoteData = (await fetch('https://contoso.com/api/users')) as any;

for (const [index, user] of Object.entries(someRemoteData.users.slice(0, 10)) as [`${0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10}`, any][]) {
switch (index) {
case '0': {
embed0.setColor('#FF0000').setDescription('example description 1').setAuthor(user.name);
break;
}
case '1': {
embed1.setColor('#00FF00').setDescription('example description 2').setAuthor(user.name);
break;
}
case '2': {
embed2.setColor('#0000FF').setDescription('example description 3').setAuthor(user.name);
break;
}
}
}

return [embed0, embed1, embed2];
});

example

const { PaginatedMessage } = require('@sapphire/discord.js-utilities');

const embed1 = new MessageEmbed()
.setColor('#FF0000')
.setDescription('example description 1');

const embed2 = new MessageEmbed()
.setColor('#00FF00')
.setDescription('example description 2');

const embed3 = new MessageEmbed()
.setColor('#0000FF')
.setDescription('example description 3');

const paginatedMessage = new PaginatedMessage()
.addAsyncPageEmbeds([embed1, embed2, embed3]); // You can add up to 10 embeds

Parameters

NameTypeDescription
embedsMessageEmbed[] | (embed1: MessageEmbed, embed2: MessageEmbed, embed3: MessageEmbed, embed4: MessageEmbed, embed5: MessageEmbed, embed6: MessageEmbed, embed7: MessageEmbed, embed8: MessageEmbed, embed9: MessageEmbed, embed10: MessageEmbed) => Promise<MessageEmbed[]>Either a callback which receives 10 parameters of new MessageEmbed(), or an array of already constructed {@link MessageEmbed}'s

Returns

PaginatedMessage

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:597


addPage

β–Έ addPage(page): PaginatedMessage

Adds a page to the existing ones. This will be added as the last page.

remark While you can use this method you should first check out PaginatedMessage.addPageBuilder, PaginatedMessage.addPageContent and PaginatedMessage.addPageEmbed as these are easier functional methods of adding pages and will likely already suffice for your needs.

Parameters

NameTypeDescription
pagePaginatedMessagePageThe page to add.

Returns

PaginatedMessage

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:300


addPageBuilder

β–Έ addPageBuilder(builder): PaginatedMessage

Adds a page to the existing ones using a MessageBuilder. This will be added as the last page.

example

const { PaginatedMessage } = require('@sapphire/discord.js-utilities');
const { MessageEmbed } = require('discord.js');

const paginatedMessage = new PaginatedMessage()
.addPageBuilder((builder) => {
const embed = new MessageEmbed()
.setColor('#FF0000')
.setDescription('example description');

return builder
.setContent('example content')
.setEmbed(embed);
});

example

const { MessageEmbed } = require('discord.js');
const { MessageBuilder, PaginatedMessage } = require('@sapphire/discord.js-utilities');

const embed = new MessageEmbed()
.setColor('#FF0000')
.setDescription('example description');

const builder = new MessageBuilder()
.setContent('example content')
.setEmbed(embed);

const paginatedMessage = new PaginatedMessage()
.addPageBuilder(builder);

Parameters

NameTypeDescription
builderMessageBuilder | (builder: MessageBuilder) => MessageBuilderEither a callback whose first parameter is new MessageBuilder(), or an already constructed MessageBuilder

Returns

PaginatedMessage

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:359


addPageContent

β–Έ addPageContent(content): PaginatedMessage

Adds a page to the existing ones using simple message content. This will be added as the last page.

example

const { PaginatedMessage } = require('@sapphire/discord.js-utilities');

const paginatedMessage = new PaginatedMessage()
.addPageContent('example content');

Parameters

NameTypeDescription
contentstringThe content to set.

Returns

PaginatedMessage

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:400


addPageEmbed

β–Έ addPageEmbed(embed): PaginatedMessage

Adds a page to the existing ones using a {@link MessageEmbed}. This wil be added as the last page.

example

const { PaginatedMessage } = require('@sapphire/discord.js-utilities');

const paginatedMessage = new PaginatedMessage()
.addPageEmbed((embed) => {
embed
.setColor('#FF0000')
.setDescription('example description');

return embed;
});

example

const { PaginatedMessage } = require('@sapphire/discord.js-utilities');

const embed = new MessageEmbed()
.setColor('#FF0000')
.setDescription('example description');

const paginatedMessage = new PaginatedMessage()
.addPageEmbed(embed);

Parameters

NameTypeDescription
embedMessageEmbed | (embed: MessageEmbed) => MessageEmbedEither a callback whose first parameter is new MessageEmbed(), or an already constructed {@link MessageEmbed}

Returns

PaginatedMessage

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:432


addPageEmbeds

β–Έ addPageEmbeds(embeds): PaginatedMessage

Adds a page to the existing ones asynchronously using multiple {@link MessageEmbed}'s. This wil be added as the last page.

remark When using this with a callback this will construct 10 {@link MessageEmbed}'s in the callback parameters, regardless of how many are actually used. If this a performance impact you do not want to cope with then it is recommended to use PaginatedMessage.addPageBuilder instead, which will let you add as many embeds as you want, albeit manually

example

const { PaginatedMessage } = require('@sapphire/discord.js-utilities');

const paginatedMessage = new PaginatedMessage()
.addPageEmbeds((embed1, embed2, embed3) => { // You can add up to 10 embeds
embed1
.setColor('#FF0000')
.setDescription('example description 1');

embed2
.setColor('#00FF00')
.setDescription('example description 2');

embed3
.setColor('#0000FF')
.setDescription('example description 3');

return [embed1, embed2, embed3];
});

example

const { PaginatedMessage } = require('@sapphire/discord.js-utilities');

const embed1 = new MessageEmbed()
.setColor('#FF0000')
.setDescription('example description 1');

const embed2 = new MessageEmbed()
.setColor('#00FF00')
.setDescription('example description 2');

const embed3 = new MessageEmbed()
.setColor('#0000FF')
.setDescription('example description 3');

const paginatedMessage = new PaginatedMessage()
.addPageEmbeds([embed1, embed2, embed3]); // You can add up to 10 embeds

Parameters

NameTypeDescription
embedsMessageEmbed[] | (embed1: MessageEmbed, embed2: MessageEmbed, embed3: MessageEmbed, embed4: MessageEmbed, embed5: MessageEmbed, embed6: MessageEmbed, embed7: MessageEmbed, embed8: MessageEmbed, embed9: MessageEmbed, embed10: MessageEmbed) => MessageEmbed[]Either a callback which receives 10 parameters of new MessageEmbed(), or an array of already constructed {@link MessageEmbed}'s

Returns

PaginatedMessage

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:506


addPages

β–Έ addPages(pages): PaginatedMessage

Add pages to the existing ones. The order given is the order they will be used.

Parameters

NameTypeDescription
pagesPaginatedMessagePage[]The pages to add.

Returns

PaginatedMessage

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:641


applyFooter

β–Έ Protected applyFooter(message, index): PaginatedMessageMessageOptionsUnion

Parameters

NameType
messagePaginatedMessageMessageOptionsUnion
indexnumber

Returns

PaginatedMessageMessageOptionsUnion

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:868


applyTemplate

β–Έ Private applyTemplate(template, options): PaginatedMessageMessageOptionsUnion

Parameters

NameType
templatePaginatedMessageMessageOptionsUnion
optionsPaginatedMessageMessageOptionsUnion

Returns

PaginatedMessageMessageOptionsUnion

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:885


applyTemplateEmbed

β–Έ Private applyTemplateEmbed(templateEmbed, pageEmbeds): undefined | (MessageEmbed | MessageEmbedOptions | APIEmbed)[]

Parameters

NameType
templateEmbedundefined | (MessageEmbed | MessageEmbedOptions | APIEmbed)[]
pageEmbedsundefined | (MessageEmbed | MessageEmbedOptions | APIEmbed)[]

Returns

undefined | (MessageEmbed | MessageEmbedOptions | APIEmbed)[]

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:894


clone

β–Έ clone(): PaginatedMessage

Clones the current handler into a new instance.

Returns

PaginatedMessage

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:715


handleCollect

β–Έ Protected handleCollect(targetUser, channel, interaction): Promise<void>

Handles the collect event from the collector.

Parameters

NameTypeDescription
targetUserUserThe user the handler is for.
channelDMChannel | PartialDMChannel | NewsChannel | TextChannel | ThreadChannelThe channel the handler is running at.
interactionButtonInteraction<CacheType> | SelectMenuInteraction<CacheType>The button interaction that was received.

Returns

Promise<void>

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:812


handleEnd

β–Έ Protected handleEnd(_, reason): void

Handles the end event from the collector.

Parameters

NameTypeDescription
_Collection<string, ButtonInteraction<CacheType> | SelectMenuInteraction<CacheType>>-
reasonstringThe reason for which the collector was ended.

Returns

void

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:858


handlePageLoad

β–Έ Protected handlePageLoad(page, index): Promise<PaginatedMessageMessageOptionsUnion>

Handles the load of a page.

Parameters

NameTypeDescription
pagePaginatedMessagePageThe page to be loaded.
indexnumberThe index of the current page.

Returns

Promise<PaginatedMessageMessageOptionsUnion>

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:792


hasPage

β–Έ hasPage(index): boolean

Checks whether or not the handler has a specific page.

Parameters

NameTypeDescription
indexnumberThe index to check.

Returns

boolean

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:275


mergeArrays

β–Έ Private mergeArrays<T>(template?, array?): undefined | T[]

Type parameters

Name
T

Parameters

NameType
template?T[]
array?T[]

Returns

undefined | T[]

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:937


mergeEmbeds

β–Έ Private mergeEmbeds(templateEmbed, pageEmbeds): (MessageEmbed | MessageEmbedOptions | APIEmbed)[]

Parameters

NameType
templateEmbedMessageEmbed | MessageEmbedOptions | APIEmbed
pageEmbeds(MessageEmbed | MessageEmbedOptions | APIEmbed)[]

Returns

(MessageEmbed | MessageEmbedOptions | APIEmbed)[]

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:909


resolvePage

β–Έ resolvePage(index): Promise<PaginatedMessagePage>

Executed whenever an action is triggered and resolved.

Parameters

NameTypeDescription
indexnumberThe index to resolve.

Returns

Promise<PaginatedMessagePage>

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:698


resolvePagesOnRun

β–Έ resolvePagesOnRun(): Promise<void>

Executed whenever PaginatedMessage.run is called.

Returns

Promise<void>

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:690


run

β–Έ run(message, target?): Promise<PaginatedMessage>

Executes the PaginatedMessage and sends the pages corresponding with PaginatedMessage.index. The handler will start collecting message button interactions.

Parameters

NameTypeDefault valueDescription
messageMessage<boolean>undefinedThe message that triggered this PaginatedMessage. Generally this will be the command message, but it can also be another message from your client, i.e. to indicate a loading state.
targetUsermessage.authorThe user who will be able to interact with the message buttons of this PaginatedMessage. Defaults to message.author.

Returns

Promise<PaginatedMessage>

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:653


setActions

β–Έ setActions(actions): PaginatedMessage

Clears all current actions and sets them. The order given is the order they will be used.

Parameters

NameTypeDescription
actionsPaginatedMessageAction[]The actions to set.

Returns

PaginatedMessage

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:248


setIdle

β–Έ setIdle(idle): PaginatedMessage

Sets the amount of time to idle before the paginator is closed.

Parameters

NameTypeDescription
idlenumberThe number to set the idle to.

Returns

PaginatedMessage

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:239


setIndex

β–Έ setIndex(index): PaginatedMessage

Sets the handler's current page/message index.

Parameters

NameTypeDescription
indexnumberThe number to set the index to.

Returns

PaginatedMessage

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:230


setPages

β–Έ setPages(pages): PaginatedMessage

Clears all current pages and messages and sets them. The order given is the order they will be used.

Parameters

NameTypeDescription
pagesPaginatedMessagePage[]The pages to set.

Returns

PaginatedMessage

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:283


setSelectMenuOptions

β–Έ setSelectMenuOptions(newOptions): PaginatedMessage

Sets the PaginatedMessage.selectMenuOptions for this instance of PaginatedMessage. This will only apply to this one instance and no others.

Parameters

NameTypeDescription
newOptionsPaginatedMessageSelectMenuOptionsFunctionThe new options generator to set

Returns

PaginatedMessage

The current instance of PaginatedMessage

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:210


setUpCollector

β–Έ Protected setUpCollector(channel, targetUser): void

Sets up the message's collector.

Parameters

NameTypeDescription
channelDMChannel | PartialDMChannel | NewsChannel | TextChannel | ThreadChannelThe channel the handler is running at.
targetUserUserThe user the handler is for.

Returns

void

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:775


setUpMessage

β–Έ Protected setUpMessage(channel, targetUser): Promise<void>

Sets up the message.

Parameters

NameTypeDescription
channelDMChannel | PartialDMChannel | NewsChannel | TextChannel | ThreadChannelThe channel the handler is running at.
targetUserUser-

Returns

Promise<void>

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:728


setWrongUserInteractionReply

β–Έ setWrongUserInteractionReply(wrongUserInteractionReply): PaginatedMessage

Sets the PaginatedMessage.wrongUserInteractionReply for this instance of PaginatedMessage. This will only apply to this one instance and no others.

Parameters

NameTypeDescription
wrongUserInteractionReplyPaginatedMessageWrongUserInteractionReplyFunctionThe new wrongUserInteractionReply to set

Returns

PaginatedMessage

The current instance of PaginatedMessage

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:221


resolveTemplate

β–Έ Static Private resolveTemplate(template?): MessageOptions

Parameters

NameType
template?MessageOptions | MessageEmbed

Returns

MessageOptions

Defined in

projects/utilities/packages/discord.js-utilities/src/lib/PaginatedMessages/PaginatedMessage.ts:1139