Moved to New Repository
A simple button and reaction pagination library for Discord.js v14
npm i @falloutstudios/djs-pagination discord.js
You can use this in TypeScript, ESM, or CommonJS but in these examples we're gonna use CommonJS.
⚠️ You cannot delete ephemeral pagination & you need to specifyauthorId
when usingNewMessage
tosendAs
param
const { ButtonPaginationBuilder } = require('@falloutstudios/djs-pagination');
const { ButtonBuilder, Client, EmbedBuilder } = require('discord.js');
const bot = new Client({
intents: ['Guilds', 'MessageContent']
});
bot.on('interactionCreate', async interaction => {
if (interaction.isChatInputCommand() && interaction.commandName == 'pagination') {
// Create pagination
const pagination = new ButtonPaginationBuilder()
// Add at least one page
.addPages([
new EmbedBuilder().setDescription('Page 1'), // Single embed page
{ content: 'Page 2', embeds: [] }, // Message data embed
'Page 3', // String page
() => new EmbedBuilder().setDescription(new Date().toString()) // Dynamic page
])
// All buttons are optional
.addButton(new ButtonBuilder().setLabel('Firat').setCustomId('first'), 'FirstPage')
.addButton(new ButtonBuilder().setLabel('Previous').setCustomId('prev'), 'PreviousPage')
.addButton(new ButtonBuilder().setLabel('Stop').setCustomId('stop'), 'Stop')
.addButton(new ButtonBuilder().setLabel('Next').setCustomId('next'), 'NextPage')
.addButton(new ButtonBuilder().setLabel('Last').setCustomId('last'), 'LastPage');
await pagination.paginate(interaction, 'ReplyMessage');
}
});
bot.login('TOKEN');
⚠️ You cannot use reaction pagination with ephemeral messages
const { ReactionPaginationBuilder } = require('@falloutstudios/djs-pagination');
const { Client, EmbedBuilder } = require('discord.js');
const bot = new Client({
intents: ['Guilds', 'MessageContent', 'GuildMessageReactions']
});
bot.on('interactionCreate', async interaction => {
if (interaction.isChatInputCommand() && interaction.commandName == 'pagination') {
// Create pagination
const pagination = new ReactionPaginationBuilder()
// Add at least one page
.addPages([
new EmbedBuilder().setDescription('Page 1'), // Single embed page
{ content: 'Page 2', embeds: [] }, // Message data embed
'Page 3', // String page
() => new EmbedBuilder().setDescription(new Date().toString()) // Dynamic page
])
// All reaction controllers are optional
.addReaction('⏪', 'FirstPage');
.addReaction('⬅', 'PreviousPage');
.addReaction('🛑', 'Stop');
.addReaction('➡️', 'NextPage');
.addReaction('⏩', 'LastPage');
await pagination.paginate(interaction, 'ReplyMessage');
}
});
bot.login('TOKEN');