An advanced module with quick setup and different options to implement pagination system for Discord.js.
This package only support discord.js v14.
This package is no longer compatible with discord.js v13
To install this module type the following command in your console:
npm install @devraelfreeze/discordjs-pagination
Options Object Name | Default Type | Description |
---|---|---|
client |
Client |
Bot client, only useful if time >= 900000 (i.e greater than 15 minutes) |
interaction |
MessageComponentInteraction or CommandInteraction |
Interaction to reply with the pagination system (The interaction can be deferred or replied) |
message |
Message |
Message Object to send the pagination system |
ephemeral |
boolean |
If the returned message should be ephemeral (Can only use in Interaction) |
embeds |
Embed[] |
Array of embeds to paginate |
author |
User |
Author's user class |
buttons |
Buttons[] |
Customization of your buttons See examples below |
disableButtons |
boolean |
Disable or remove buttons after timeout (true = disable, false = remove) |
deleteAtEnd |
boolean |
Delete or not the embed or message after timeout (true = remove, false = keep) |
pageTravel |
boolean |
Travel pages by sending page numbers (With Modal Interaction) |
fastSkip |
boolean |
Create two additional buttons, a button to skip to the end and a button to skip to the first page |
time |
number |
How long before pagination get disabled (in ms) |
max |
number |
Maximum interactions with buttons before disabling the pagination |
customFilter |
boolean |
Custom filter for message component collector Must return boolean |
/** Decalre the module */
const {pagination, ButtonTypes, ButtonStyles} = require('@devraelfreeze/discordjs-pagination');
/** Use pagination system */
await pagination({
/** Pagination options here */
});
await pagination({
embeds: arrayEmbeds, /** Array of embeds objects */
author: interaction.member.user,
interaction: interaction,
ephemeral: true,
time: 40000, /** 40 seconds */
disableButtons: false, /** Remove buttons after timeout */
fastSkip: false,
pageTravel: false,
buttons: [
{
type: ButtonTypes.previous,
label: 'Previous Page',
style: ButtonStyles.Primary
},
{
type: ButtonTypes.next,
label: 'Next Page',
style: ButtonStyles.Success
}
]
});
await pagination({
interaction: interaction,
embeds: arrayEmbeds,
author: interaction.member.user,
time: 40000,
fastSkip: false,
disableButtons: true,
pageTravel: false,
/** Enable buttons pagination system only for member with ID: 123456789 */
customFilter: (interaction: CommandInteraction|MessageComponentInteraction) => {
return interaction.member.user.id === '123456789';
},
buttons: [
{
type: ButtonTypes.previous,
label: 'Previous Page',
style: ButtonStyles.Success,
emoji: '◀️'
},
{
type: ButtonTypes.next,
label: 'Next Page',
style: ButtonStyles.Success,
emoji: null /** Disable emoji for this button */
}
]
});
If you have any bugs or trouble setting the module up, feel free to open an issue
on GitHub Repository
Discord: 1043813027205619804
If you want to use old version, you can use command
npm install @devraelfreeze/discordjs-pagination@<version>
- Create new
customComponents
parameter to let the user choose to add buttons / selections menus in the components of the pagination system. - Create new
Screenshots
section in README and show examples - Make the package compatible so that it takes into account an array of
Message
objects and not only an array ofEmbed
objects.
Copyright © 2022 devRael1
This project is MIT licensed.
This is not an official Discord product. It is not affiliated with or endorsed by Discord Inc.