Zonies-Bot/functions/pagination.js
2025-05-12 12:57:59 -05:00

29 lines
1.0 KiB
JavaScript

class Paginator {
constructor({ user, client, timeout }) {
this.pages = [];
this.client = client;
this.user = user;
this.page = 0;
this.timeout = timeout;
}
add(page) {
if (page.length) {
page.forEach((x) => { this.pages.push(x) });
return this;
}
this.pages.push(page);
return this;
}
async start(channel) {
if (!this.pages.length) return;
const reactions = ["⏪", "⬅️", "➡️", "⏩"];
this.pages.forEach((e, i=0) => { e.description = `${e.description}\n\nPage ${i+1} / ${this.pages.length}` })
const message1 = await channel.sendMessage({ embeds: [this.pages[0]], interactions: { reactions } });
this.client.paginate.set(this.user, { pages: this.pages, page: this.page, message: message1.id });
setTimeout(() => { if (this.client.paginate.get(this.user)) this.client.paginate.delete(this.user) }, this.timeout);
}
}
module.exports = Paginator;