Compare commits
2 commits
a213e727c1
...
d29a81c786
Author | SHA1 | Date | |
---|---|---|---|
d29a81c786 | |||
3fc8ea3e28 |
5 changed files with 27 additions and 28 deletions
|
@ -2,14 +2,15 @@ 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<TPage extends EmbedPage> extends ButtonEvent {
|
||||
public override async execute(interaction: ButtonInteraction<CacheType>) {
|
||||
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<TPage>;
|
||||
|
||||
switch (action) {
|
||||
case "next":
|
||||
|
|
|
@ -3,9 +3,7 @@ import PaginatedEmbed from "../../helpers/PaginatedEmbed";
|
|||
import TestPage from "../../helpers/Pagination/TestPage";
|
||||
import { PaginatedCommand } from "../../type/paginatedCommand";
|
||||
|
||||
export default class Paginationtest extends PaginatedCommand {
|
||||
public paginatedEmbed: PaginatedEmbed<TestPage>;
|
||||
|
||||
export default class Paginationtest extends PaginatedCommand<TestPage> {
|
||||
constructor() {
|
||||
super();
|
||||
|
||||
|
@ -13,8 +11,6 @@ export default class Paginationtest extends PaginatedCommand {
|
|||
.setName('paginationtest')
|
||||
.setDescription('Test the pagination functionality');
|
||||
|
||||
this.paginatedEmbed = new PaginatedEmbed<TestPage>("paginationtest");
|
||||
|
||||
this.InitialisePages();
|
||||
}
|
||||
|
||||
|
@ -24,18 +20,6 @@ export default class Paginationtest extends PaginatedCommand {
|
|||
await page!.sendCommandEmbed(interaction);
|
||||
}
|
||||
|
||||
public override async nextPage(interaction: ButtonInteraction<CacheType>) {
|
||||
const page = this.paginatedEmbed.NextPage();
|
||||
|
||||
await page!.sendButtonEmbed(interaction);
|
||||
}
|
||||
|
||||
public override async previousPage(interaction: ButtonInteraction<CacheType>) {
|
||||
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);
|
||||
|
|
|
@ -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}`);
|
||||
this.setDescription(`You are viewing page ${page + 1}`);
|
||||
}
|
||||
}
|
|
@ -6,19 +6,19 @@ export default class EmbedPage extends EmbedBuilder {
|
|||
constructor(embedId: string, page: number, total: number) {
|
||||
super();
|
||||
|
||||
this.setFooter({ text: `Page ${page} of ${total}`});
|
||||
this.setFooter({ text: `Page ${page + 1} of ${total + 1}`});
|
||||
|
||||
this.row = new ActionRowBuilder<ButtonBuilder>();
|
||||
|
||||
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,9 +31,10 @@ export default class EmbedPage extends EmbedBuilder {
|
|||
}
|
||||
|
||||
public async sendButtonEmbed(interaction: ButtonInteraction) {
|
||||
await interaction.reply({
|
||||
await interaction.update({
|
||||
embeds: [ this ],
|
||||
components: [ this.row ],
|
||||
});
|
||||
return;
|
||||
}
|
||||
}
|
|
@ -1,14 +1,27 @@
|
|||
import { ButtonInteraction, CommandInteraction } from "discord.js";
|
||||
import { ButtonInteraction, CacheType } from "discord.js";
|
||||
import { Command } from "./command";
|
||||
import PaginatedEmbed from "../helpers/PaginatedEmbed";
|
||||
import EmbedPage from "./embedPage";
|
||||
|
||||
export class PaginatedCommand extends Command {
|
||||
export class PaginatedCommand<TPage extends EmbedPage> extends Command {
|
||||
public CommandBuilder: any;
|
||||
public paginatedEmbed: PaginatedEmbed<TPage>;
|
||||
|
||||
public async nextPage(interaction: ButtonInteraction) {
|
||||
constructor() {
|
||||
super();
|
||||
|
||||
this.paginatedEmbed = new PaginatedEmbed<TPage>("paginationtest");
|
||||
}
|
||||
|
||||
public async previousPage(interaction: ButtonInteraction) {
|
||||
public async nextPage(interaction: ButtonInteraction<CacheType>) {
|
||||
const page = this.paginatedEmbed.NextPage();
|
||||
|
||||
await page!.sendButtonEmbed(interaction);
|
||||
}
|
||||
|
||||
public async previousPage(interaction: ButtonInteraction<CacheType>) {
|
||||
const page = this.paginatedEmbed.PreviousPage();
|
||||
|
||||
await page!.sendButtonEmbed(interaction);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue