const { MessageButton, MessageActionRow } = require('discord.js') const ms = require('ms'); const paginator = async (message, pages) => { if(!message && !message.channel) throw new Error("Provide a message to acces the channel") if(!pages) throw new Error("Please provide pages") let page = 0 const btn1 = new MessageButton().setLabel("Back").setCustomId("00001").setStyle('SECONDARY') const btn2 = new MessageButton().setLabel("Next").setCustomId("00002").setStyle('SECONDARY') const row = new MessageActionRow().addComponents([btn1, btn2]) const btn1After = new MessageButton().setLabel("Back").setCustomId("00001").setStyle('SECONDARY').setDisabled() const btn2After = new MessageButton().setLabel("Back").setCustomId("00002").setStyle('SECONDARY').setDisabled() const deadRow = new MessageActionRow().addComponents([btn1After, btn2After]) const curPage = await message.channel.send({embed: pages[0], component: row}) const filter = (b) => ["00001, 00002"].includes(b.id) const col = await curPage.createButtonCollector(filter, { time: ms('10s') }) col.on('collect', button => { button.reply.defer() if(button.clicker.user.id !== message.author.id) return if(button.id == '00001') { page = page > 0 ? --page : pages.length - 1 } else if(button.id == '00002') { page = page + 1 < pages.length ? ++page : 0; } curPage.edit({embed: pages[page], component: row}) }) col.on('end', () => { if(!curPage.deleted) { curPage.edit({embed: pages[page], component: deadRow}) } }) return curPage } module.exports = paginator