UNPKG

djskage

Version:

A Discord.js extension for utility commands

51 lines (50 loc) 2.07 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createPaginatedReply = createPaginatedReply; const discord_js_1 = require("discord.js"); async function createPaginatedReply(ctx, contentChunks, contentType) { let page = 0; const nextPage = new discord_js_1.ButtonBuilder() .setCustomId("djskage$nextpage") .setLabel("Next") .setStyle(discord_js_1.ButtonStyle.Secondary); const stopCollecting = new discord_js_1.ButtonBuilder() .setCustomId("djskage$stop") .setLabel(`${page + 1}/${contentChunks.length}`) .setStyle(discord_js_1.ButtonStyle.Secondary); const previousPage = new discord_js_1.ButtonBuilder() .setCustomId("djskage$prevpage") .setLabel("Previous") .setStyle(discord_js_1.ButtonStyle.Secondary); const row = new discord_js_1.ActionRowBuilder().addComponents(previousPage, stopCollecting, nextPage); const replyMsg = await ctx.reply({ content: `\`\`\`${contentType}\n${contentChunks[page]}\`\`\``, components: [row], }); const collector = replyMsg.createMessageComponentCollector({ filter: (i) => i.user.id === ctx.author.id && i.channel?.id === ctx.channel.id, time: 120000, }); collector.on("collect", async (i) => { if (i.customId === "djskage$nextpage") { page = (page + 1) % contentChunks.length; } else if (i.customId === "djskage$prevpage") { page = (page - 1 + contentChunks.length) % contentChunks.length; } else if (i.customId === "djskage$stop") { await i.reply({ content: "Stopped collecting.", ephemeral: true, }); collector.stop(); return i.message.delete(); } stopCollecting.setLabel(`${page + 1}/${contentChunks.length}`); i.deferUpdate(); replyMsg.edit({ content: `\`\`\`${contentType}\n${contentChunks[page]}\`\`\``, components: [row], }); }); }