A paginator utility for Discord.js embeds.
MIT License
An easy and highly customizable utility for paginating embeds in discord.js.
Buttons become disabled when at the beginning or end of page list:
Whenever the given timeout occurs, buttons are automatically removed as well as the current page footer.
Simply import the and use the utility function:
import { sendPaginatedEmbeds } from 'discord.js-embed-pagination';
sendPaginatedEmbeds(interaction, embeds);
import { sendPaginatedEmbeds } from 'discord.js-embed-pagination';
const titles = [
'Page 1',
'Page 2',
'Page 3',
];
async run(interaction: CommandInteraction) {
const embeds = new titles.map(title => new MessageEmbed().setTitle(title));
await sendPaginatedEmbeds(interaction, embeds);
}
You can provide options for how the embed is displayed
interface PageButtonOptions {
/**
* The style of the button.
*/
style?: InteractionButtonOptions['style'];
/**
* The text to be displayed on the next button (Defaults to 'Next').
*/
nextLabel?: string;
/**
* The text to be displayed on the previous button. (Defaults to 'Previous').
*/
previousLabel?: string;
/**
* The message to be alongside the paginated embeds.
*/
content?: string;
/**
* Whether or not to show the current page in the footer of each embed (Defaults to being shown).
*/
showPagePosition?: boolean;
/**
* How long the paginator should run for in ms. (Default is 30min)
*/
time?: number;
/**
* The label that displays in the page position footer.
*/
pageLabel?: string;
}
Like changing the color and label text for example:
await sendPaginatedEmbeds(interaction, embeds, {
style: 'SECONDARY',
previousLabel: 'Previous Page!',
nextLabel: 'Next Page!',
});
This results in something like this: