public paginationButtons(): ButtonBuilder[] {
return [
new ButtonBuilder().setCustomId('pg-prev').setLabel('Previous').setStyle(ButtonStyle.Primary).setEmoji('ā¬
ļø'),
new ButtonBuilder().setCustomId('pg-home').setLabel('Home').setStyle(ButtonStyle.Secondary).setEmoji('š”'),
new ButtonBuilder().setCustomId('pg-next').setLabel('Next').setStyle(ButtonStyle.Primary).setEmoji('ā”ļø'),
];
}
public async ChatInputEmbedPagination(interaction: ChatInputCommandInteraction<CacheType>, pages: EmbedBuilder[], time: number = 30 * 1000, ephemeral?: boolean): Promise<Message<boolean>> {
if (interaction.deferred || interaction.replied) {
throw new Error("Interaction already deferred or replied");
}
await interaction.deferReply({ ephemeral, fetchReply: true });
if (pages.length === 1) {
return await interaction.editReply({
embeds: pages,
components: [],
});
}
const prev = this.paginationButtons()[0].setDisabled(true);
const home = this.paginationButtons()[1].setDisabled(true);
const next = this.paginationButtons()[2].setDisabled(true);
const buttons = new ActionRowBuilder().addComponents([prev, home, next]);
let page = 0;
const msg = await interaction.editReply({
embeds: [pages[page]],
components: [buttons]
})
}
public paginationButtons(): ButtonBuilder[] {
return [
new ButtonBuilder().setCustomId('pg-prev').setLabel('Previous').setStyle(ButtonStyle.Primary).setEmoji('ā¬
ļø'),
new ButtonBuilder().setCustomId('pg-home').setLabel('Home').setStyle(ButtonStyle.Secondary).setEmoji('š”'),
new ButtonBuilder().setCustomId('pg-next').setLabel('Next').setStyle(ButtonStyle.Primary).setEmoji('ā”ļø'),
];
}
public async ChatInputEmbedPagination(interaction: ChatInputCommandInteraction<CacheType>, pages: EmbedBuilder[], time: number = 30 * 1000, ephemeral?: boolean): Promise<Message<boolean>> {
if (interaction.deferred || interaction.replied) {
throw new Error("Interaction already deferred or replied");
}
await interaction.deferReply({ ephemeral, fetchReply: true });
if (pages.length === 1) {
return await interaction.editReply({
embeds: pages,
components: [],
});
}
const prev = this.paginationButtons()[0].setDisabled(true);
const home = this.paginationButtons()[1].setDisabled(true);
const next = this.paginationButtons()[2].setDisabled(true);
const buttons = new ActionRowBuilder().addComponents([prev, home, next]);
let page = 0;
const msg = await interaction.editReply({
embeds: [pages[page]],
components: [buttons]
})
}