3.0.3 • Published 2 years ago

@adriholman/discordjs-button-pagination v3.0.3

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

This has been modified for my personal use, you are free to do it too

discordjs-pagination

discordjs-button-pagination

A simple package to paginate discord embeds via discord buttons introduced in discord.js v13.

Installation

There is only one version that work for both message and interaction

  • npm install @adriholman/discordjs-button-pagination

Requirements

Node.js 16.6.1 or newer is required along with Discord.js 13.0.0 or newer.

Usage

Basic Bot Example

// Import the discordjs-button-pagination package
const paginationEmbed = require('discordjs-button-pagination');

// Use MessageEmbed to make pages
// Keep in mind that Embeds should't have their footers set since the pagination method sets page info there
const { MessageEmbed , MessageButton} = require('discord.js');
const embed1 = new MessageEmbed()
                .setTitle('First Page')
                .setDescription('This is the first page');

const embed2 = new MessageEmbed()
                .setTitle('Second Page')
                .setDescription('This is the second page');

const button1 = new MessageButton()
                .setCustomId('previousbtn')
                .setLabel('Previous')
                .setStyle('DANGER');

const button2 = new MessageButton()
                .setCustomId('nextbtn')
                .setLabel('Next')
                .setStyle('SUCCESS');

// Create an array of embeds
pages = [
	embed1,
	embed2,
	//....
	//embedN
];

//create an array of buttons

buttonList = [
    button1,
    button2
]

// Call the paginationEmbed method, first three arguments are required
// timeout is the time till the reaction collectors are active, after this you can't change pages (in ms), defaults to 120000
paginationEmbed(interaction, pages, buttonList, timeout);
//or for message
paginationEmbed(message, pages, buttonList, timeout);
// There you go, now you have paged embeds

Note

This will not work with buttons whose style is set as 'LINK' as they do not trigger an interaction event. The buttons will auto disable once the the collector ends after the timeout.

The collector timer resets after receiving a button interaction.

Preview

First Page

pic1

Second Page

pic2

Disabled Buttons after collector end

pic3

For any issues or suggestions, kindly open an issue/pull request on the GitHub Repository