diff --git a/src/buttonEvents/Pagination.ts b/src/buttonEvents/Pagination.ts index d39371c..036dd92 100644 --- a/src/buttonEvents/Pagination.ts +++ b/src/buttonEvents/Pagination.ts @@ -2,15 +2,14 @@ import { ButtonInteraction, CacheType } from "discord.js"; import { ButtonEvent } from "../type/buttonEvent"; import { CoreClient } from "../client/client"; import { PaginatedCommand } from "../type/paginatedCommand"; -import EmbedPage from "../type/embedPage"; -export default class Pagination extends ButtonEvent { +export default class Pagination extends ButtonEvent { public override async execute(interaction: ButtonInteraction) { const embedId = interaction.customId.split(' ')[1]; const action = interaction.customId.split(' ')[2]; const commandItem = CoreClient.commandItems.find(x => x.Name == embedId); - const command = commandItem?.Command as PaginatedCommand; + const command = commandItem?.Command as PaginatedCommand; switch (action) { case "next": diff --git a/src/commands/dev/paginationtest.ts b/src/commands/dev/paginationtest.ts index 1a3d6ac..76e4790 100644 --- a/src/commands/dev/paginationtest.ts +++ b/src/commands/dev/paginationtest.ts @@ -3,7 +3,9 @@ import PaginatedEmbed from "../../helpers/PaginatedEmbed"; import TestPage from "../../helpers/Pagination/TestPage"; import { PaginatedCommand } from "../../type/paginatedCommand"; -export default class Paginationtest extends PaginatedCommand { +export default class Paginationtest extends PaginatedCommand { + public paginatedEmbed: PaginatedEmbed; + constructor() { super(); @@ -11,6 +13,8 @@ export default class Paginationtest extends PaginatedCommand { .setName('paginationtest') .setDescription('Test the pagination functionality'); + this.paginatedEmbed = new PaginatedEmbed("paginationtest"); + this.InitialisePages(); } @@ -20,6 +24,18 @@ export default class Paginationtest extends PaginatedCommand { await page!.sendCommandEmbed(interaction); } + public override async nextPage(interaction: ButtonInteraction) { + const page = this.paginatedEmbed.NextPage(); + + await page!.sendButtonEmbed(interaction); + } + + public override async previousPage(interaction: ButtonInteraction) { + const page = this.paginatedEmbed.PreviousPage(); + + await page!.sendButtonEmbed(interaction); + } + private InitialisePages() { const page0 = new TestPage("paginationtest", 0, 2); const page1 = new TestPage("paginationtest", 1, 2); diff --git a/src/helpers/Pagination/TestPage.ts b/src/helpers/Pagination/TestPage.ts index 87cc4ec..7eb1f3f 100644 --- a/src/helpers/Pagination/TestPage.ts +++ b/src/helpers/Pagination/TestPage.ts @@ -5,6 +5,6 @@ export default class TestPage extends EmbedPage { super(embedId, page, total); this.setTitle("Test Embed"); - this.setDescription(`You are viewing page ${page + 1}`); + this.setDescription(`You are viewing page ${page}`); } } \ No newline at end of file diff --git a/src/type/embedPage.ts b/src/type/embedPage.ts index 0099aa1..82577f5 100644 --- a/src/type/embedPage.ts +++ b/src/type/embedPage.ts @@ -6,19 +6,19 @@ export default class EmbedPage extends EmbedBuilder { constructor(embedId: string, page: number, total: number) { super(); - this.setFooter({ text: `Page ${page + 1} of ${total + 1}`}); + this.setFooter({ text: `Page ${page} of ${total}`}); this.row = new ActionRowBuilder(); this.row.addComponents( new ButtonBuilder() .setCustomId(`pagination ${embedId} previous`) - .setLabel("◀️") + .setLabel("<") .setStyle(ButtonStyle.Primary) .setDisabled(page == 0), new ButtonBuilder() .setCustomId(`pagination ${embedId} next`) - .setLabel("▶️") + .setLabel(">") .setStyle(ButtonStyle.Primary) .setDisabled(page == total)); } @@ -31,10 +31,9 @@ export default class EmbedPage extends EmbedBuilder { } public async sendButtonEmbed(interaction: ButtonInteraction) { - await interaction.update({ + await interaction.reply({ embeds: [ this ], components: [ this.row ], }); - return; } } \ No newline at end of file diff --git a/src/type/paginatedCommand.ts b/src/type/paginatedCommand.ts index ca5ace6..6132175 100644 --- a/src/type/paginatedCommand.ts +++ b/src/type/paginatedCommand.ts @@ -1,27 +1,14 @@ -import { ButtonInteraction, CacheType } from "discord.js"; +import { ButtonInteraction, CommandInteraction } from "discord.js"; import { Command } from "./command"; -import PaginatedEmbed from "../helpers/PaginatedEmbed"; -import EmbedPage from "./embedPage"; -export class PaginatedCommand extends Command { +export class PaginatedCommand extends Command { public CommandBuilder: any; - public paginatedEmbed: PaginatedEmbed; - constructor() { - super(); + public async nextPage(interaction: ButtonInteraction) { - this.paginatedEmbed = new PaginatedEmbed("paginationtest"); } - public async nextPage(interaction: ButtonInteraction) { - const page = this.paginatedEmbed.NextPage(); + public async previousPage(interaction: ButtonInteraction) { - await page!.sendButtonEmbed(interaction); - } - - public async previousPage(interaction: ButtonInteraction) { - const page = this.paginatedEmbed.PreviousPage(); - - await page!.sendButtonEmbed(interaction); } }