@acegoal07/discordjs-pagination
Version:
A simple pagination for Discord.js
66 lines • 2.44 kB
JavaScript
// Dependencies
const { ActionRowBuilder, ButtonBuilder } = require("discord.js");
/**
* Sends back a list of buttons to be used
* @param {Number} pageListLength
* @param {Boolean} autoDelButton
* @returns {Promise.<import("discord.js").ButtonBuilder[]>}
*/
exports.AutoButtonCreator = async (pageListLength, autoDelButton) => {
// Pre-made buttons
const next = new ButtonBuilder()
.setLabel(`>`)
.setStyle("Secondary")
.setDisabled(false)
.setCustomId(`nextbtn`);
const previous = new ButtonBuilder()
.setLabel(`<`)
.setStyle("Secondary")
.setDisabled(false)
.setCustomId(`previousbtn`);
const first = new ButtonBuilder()
.setLabel(`<<`)
.setStyle("Secondary")
.setDisabled(false)
.setCustomId(`firstbtn`);
const last = new ButtonBuilder()
.setLabel(`>>`)
.setStyle("Secondary")
.setDisabled(false)
.setCustomId(`lastbtn`);
const del = new ButtonBuilder()
.setLabel(`🗑`)
.setStyle("Danger")
.setDisabled(false)
.setCustomId(`delbtn`);
// Function code
try {
const buttonList = pageListLength <= 3 ? [previous, next] : [first, previous, next, last];
if (autoDelButton) { buttonList.push(del); }
return Promise.resolve(buttonList);
} catch (error) { throw new Error(`Error occurred with ${__filename.split(/[\\/]/).pop().replace(".js", "")} function AutoButtonCreator ${error}`); }
}
/**
* Sends back a list of disabled buttons to be used
* @param {ButtonBuilder[]} buttonList - An array of the buttons
* @returns {Promise.<import("discord.js").ActionRowBuilder[]>}
*/
exports.DisabledButtonCreator = async (buttonList) => {
try {
let count = 0;
const disabledButtonList = [];
for (const button of buttonList) {
disabledButtonList.push(
new ButtonBuilder({
emoji: button.data.emoji,
custom_id: `disabledBtn${count}`,
label: button.data.label,
style: button.data.style,
disabled: true
})
);
count += 1;
}
return Promise.resolve(new ActionRowBuilder().addComponents(disabledButtonList));
} catch (error) { throw new Error(`Error occurred with ${__filename.split(/[\\/]/).pop().replace(".js", "")} function DisabledButtonCreator ${error}`); }
}