❓discordjs-pagination
An advanced module with quick setup and different options to implement pagination system for Discord.js.
This package only support discord.js v14.
I will not do any more updates for version 1.8.x.
This package is no longer compatible with discord.js v13
📥 Installation
To install this module type the following command in your console:
npm install @devraelfreeze/discordjs-pagination
⚙️ Pagination Module Options
Options Object Name | Default Type | Description |
---|---|---|
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) |
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 |
⬇️ Examples
Declare & Use Pagination System
/** Decalre the module */
const {pagination, ButtonTypes, ButtonStyles} = require('@devraelfreeze/discordjs-pagination');
/** Use pagination system */
await pagination({
/** Pagination options here */
});
Use pagination System with custom buttons
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
}
]
});
Use pagination System with custom buttons and custom filter
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 */
}
]
});
🐛 Bug Reports
If you have any bugs or trouble setting the module up, feel free to open an issue
on GitHub Repository
If you want more support, you can contact me on Discord:
devRael#0123 (ID: 728231238707445801)
🗃️ Old Versions
If you want to use old version, you can use command
npm install @devraelfreeze/discordjs-pagination@<version>
🧾 TODO
- 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.
📝 License
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.