djskage
Version:
A Discord.js extension for utility commands
51 lines (50 loc) • 2.07 kB
JavaScript
;
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],
});
});
}