DEV Community

Ryzyx
Ryzyx

Posted on • Edited on

3 2

Pagination Embed with Discord Buttons introduced in Discord.js v13

Hey folks, this is my first dev.to post. I'll be covering how to use Buttons introduced in Discord.js v13 to paginate through Message Embeds.

Assuming you already know how to work with discord.js, lets get straight to the point. First of all you'll need this package discordjs-button-pagination. Install it by running
npm install discordjs-button-pagination.
Go to your desired file and declare it as such.

Note: Make sure to define MessageEmbed and MessageButton first if you haven't.

const paginationEmbed = require('discordjs-button-pagination')
Enter fullscreen mode Exit fullscreen mode

And then define your embeds, for me I've taken this as an example:

const embed1 = new MessageEmbed()
      .setTitle("First Page")
      .setDescription("My First Dev.to Post");

const embed2 = new MessageEmbed()
      .setTitle("Second Page")
      .setDescription("The second page of my dev.to post");
Enter fullscreen mode Exit fullscreen mode

The number of the embeds can be as much as you want. Moving on, now define how you'd like your Previous and Next button should look like. This package gives complete customization on how you want your buttons to be.

I've taken the buttons as such:

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

const button2 = new MessageButton()
      .setCustomId("nextbtn")
      .setLabel("Next")
      .setStyle("SUCCESS");
Enter fullscreen mode Exit fullscreen mode

After that all that's left is to make an array of the embeds and buttons, you can either declare the arrays as constants or pass them in raw. In this example, I am taking them as constants as such:

const pages = [
      embed1,
      embed2,
      //....
      //embedN (till the number of your embeds)
    ];

    //create an array of buttons

const buttonList = [button1, button2];
Enter fullscreen mode Exit fullscreen mode

Pass in the time you would like to make the collector run for as a constant or raw. In this case, I will be taking it as a const again for better explanation.

Note: The time should be in milliseconds

const timeout = 10000
Enter fullscreen mode Exit fullscreen mode

Finally, call the function as such:

paginationEmbed(message, pages, buttonList, timeout);
Enter fullscreen mode Exit fullscreen mode

Complete resulting code:

const paginationEmbed = require('discordjs-button-pagination');
const embed1 = new MessageEmbed()
      .setTitle("First Page")
      .setDescription("My First Dev.to Post");

const embed2 = new MessageEmbed()
      .setTitle("Second Page")
      .setDescription("The second page of my dev.to post");
const button1 = new MessageButton()
      .setCustomId("previousbtn")
      .setLabel("Previous")
      .setStyle("DANGER");

const button2 = new MessageButton()
      .setCustomId("nextbtn")
      .setLabel("Next")
      .setStyle("SUCCESS");
const pages = [
      embed1,
      embed2,
      //....
      //embedN (till the number of your embeds)
    ];

    //create an array of buttons

const buttonList = [button1, button2];
const timeout = 10000;
paginationEmbed(message, pages, buttonList, timeout);
Enter fullscreen mode Exit fullscreen mode

If you encounter any issues while following the tutorial, let me know in the comments

If you found this helpful, kindly consider supporting the repository by starring/forking.

GitHub logo ryzyx / discordjs-button-pagination

A simple package for pagination using buttons introduced in discord.js v13.

discordjs-pagination

NPM info

discordjs-button-pagination

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

Versions

discordjs-button-pagination@interaction [Default]

for slash command interaction.

discordjs-button-pagination@msg

for message command.

Installation

For message event

  • npm install discordjs-button-pagination@msg

For interaction event

  • npm install discordjs-button-pagination@interaction

Default command: npm install discordjs-button-pagination will install the interaction version

Requirements

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

Usage for Interaction (Slash Command)

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(
Enter fullscreen mode Exit fullscreen mode

My GitHub
The package used on npmjs.com

Image of Datadog

The Future of AI, LLMs, and Observability on Google Cloud

Datadog sat down with Google’s Director of AI to discuss the current and future states of AI, ML, and LLMs on Google Cloud. Discover 7 key insights for technical leaders, covering everything from upskilling teams to observability best practices

Learn More

Top comments (1)

Collapse
 
nimit2801 profile image
Nimit Savant

Where to use this? paginationEmbed?

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay