Allows you to create a simple and fully customizable embed pagination with discord.js v14.
Need help ? Join my Discord server and send me a private message ! (Cobra//#5239 ; 619838036846575617)
Create the pagination instance with your discord's client's user's id
new EmbedPagination(clientId: string)
Set the user who own this pagination, and the optional error message for others
If no errorMessage provided, everyone can use the pagination
setUserId(userId: Snowflake, errorMessage?: string): this
Set the interaction or the message
.setInteraction(interaction): this
or
.setMessage(message): this
Set the longevity (default to 1_200_000)
.setTime(time: number): this
Set the navigation buttons labels
.setLabels(label0: string, label1: string): this
Set additionnal rows to the message
.setRows(rows: ActionRowBuilder<ButtonBuilder | SelectMenuBuilder>[]): this
Add an embed
addEmbed(embed: EmbedBuilder | ((instance: this) => EmbedBuilder)): this
Set embeds
setEmbeds(embeds: (EmbedBuilder | ((instance: this) => EmbedBuilder))[]): this
Add a button
addButton(button: PaginationButton): this
Set buttons
setButtons(buttons: PaginationButton[]): this
If true and if the pagination only contains 1 page, remove the navigation buttons
autoRemoveUpdateButtons(value: boolean): this
Disable the navigation buttons
disableUpdateButtons(state: boolean): this
Disable all the message components at the end of the collector
disableAtEnd(state: boolean): this
Set a callback executed at each page change
setUpdateCallback(callback: (instance: this, p: number) => void): this
Set a callback for your custom components
setSpecialCallback(callback: (instance: this, i: MessageComponentInteraction | SelectMenuInteraction) => void): this
Update the pagination
update(): void
Start the pagination
start(page?: number): Promise<void>
Change the current page of the pagination (can be use in the callbacks)
changePage(type: string, interaction: MessageComponentInteraction): void
const { EmbedBuilder, ButtonBuilder, ButtonStyle } = require("discord.js");
const { EmbedPagination } = require("djs-embedpagination");
const embed = new EmbedBuilder()
.setColor("#2a90fe")
.setTitle("First embed")
.setDescription("If you see this, the embedpagination works !");
const embed2 = new EmbedBuilder()
.setColor("#2a90fe")
.setTitle("Second embed")
.setDescription("Hello world !");
new EmbedPagination(client.user.id)
.setUserId(interaction.user.id, "You can't interact with this message !")
.setInteraction(interaction)
.setLabels("Previous Page", "Next Page")
.setEmbeds([embed, embed2])
.addButton({
position: "Right",
button: new ButtonBuilder()
.setCustomId("custom-button")
.setLabel("Custom button")
.setStyle(ButtonStyle.Secondary)
})
.setSpecialCallback((instance, i) => i.reply("Clicked !"))
.start();