Compare commits
No commits in common. "d29a81c786a777f791d2e67f17d326de45d8fb18" and "a213e727c1920d7c810abb225064c126a96b47fe" have entirely different histories.
d29a81c786
...
a213e727c1
5 changed files with 28 additions and 27 deletions
|
@ -2,15 +2,14 @@ import { ButtonInteraction, CacheType } from "discord.js";
|
||||||
import { ButtonEvent } from "../type/buttonEvent";
|
import { ButtonEvent } from "../type/buttonEvent";
|
||||||
import { CoreClient } from "../client/client";
|
import { CoreClient } from "../client/client";
|
||||||
import { PaginatedCommand } from "../type/paginatedCommand";
|
import { PaginatedCommand } from "../type/paginatedCommand";
|
||||||
import EmbedPage from "../type/embedPage";
|
|
||||||
|
|
||||||
export default class Pagination<TPage extends EmbedPage> extends ButtonEvent {
|
export default class Pagination extends ButtonEvent {
|
||||||
public override async execute(interaction: ButtonInteraction<CacheType>) {
|
public override async execute(interaction: ButtonInteraction<CacheType>) {
|
||||||
const embedId = interaction.customId.split(' ')[1];
|
const embedId = interaction.customId.split(' ')[1];
|
||||||
const action = interaction.customId.split(' ')[2];
|
const action = interaction.customId.split(' ')[2];
|
||||||
|
|
||||||
const commandItem = CoreClient.commandItems.find(x => x.Name == embedId);
|
const commandItem = CoreClient.commandItems.find(x => x.Name == embedId);
|
||||||
const command = commandItem?.Command as PaginatedCommand<TPage>;
|
const command = commandItem?.Command as PaginatedCommand;
|
||||||
|
|
||||||
switch (action) {
|
switch (action) {
|
||||||
case "next":
|
case "next":
|
||||||
|
|
|
@ -3,7 +3,9 @@ import PaginatedEmbed from "../../helpers/PaginatedEmbed";
|
||||||
import TestPage from "../../helpers/Pagination/TestPage";
|
import TestPage from "../../helpers/Pagination/TestPage";
|
||||||
import { PaginatedCommand } from "../../type/paginatedCommand";
|
import { PaginatedCommand } from "../../type/paginatedCommand";
|
||||||
|
|
||||||
export default class Paginationtest extends PaginatedCommand<TestPage> {
|
export default class Paginationtest extends PaginatedCommand {
|
||||||
|
public paginatedEmbed: PaginatedEmbed<TestPage>;
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
|
@ -11,6 +13,8 @@ export default class Paginationtest extends PaginatedCommand<TestPage> {
|
||||||
.setName('paginationtest')
|
.setName('paginationtest')
|
||||||
.setDescription('Test the pagination functionality');
|
.setDescription('Test the pagination functionality');
|
||||||
|
|
||||||
|
this.paginatedEmbed = new PaginatedEmbed<TestPage>("paginationtest");
|
||||||
|
|
||||||
this.InitialisePages();
|
this.InitialisePages();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,6 +24,18 @@ export default class Paginationtest extends PaginatedCommand<TestPage> {
|
||||||
await page!.sendCommandEmbed(interaction);
|
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() {
|
private InitialisePages() {
|
||||||
const page0 = new TestPage("paginationtest", 0, 2);
|
const page0 = new TestPage("paginationtest", 0, 2);
|
||||||
const page1 = new TestPage("paginationtest", 1, 2);
|
const page1 = new TestPage("paginationtest", 1, 2);
|
||||||
|
|
|
@ -5,6 +5,6 @@ export default class TestPage extends EmbedPage {
|
||||||
super(embedId, page, total);
|
super(embedId, page, total);
|
||||||
|
|
||||||
this.setTitle("Test Embed");
|
this.setTitle("Test Embed");
|
||||||
this.setDescription(`You are viewing page ${page + 1}`);
|
this.setDescription(`You are viewing page ${page}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -6,19 +6,19 @@ export default class EmbedPage extends EmbedBuilder {
|
||||||
constructor(embedId: string, page: number, total: number) {
|
constructor(embedId: string, page: number, total: number) {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
this.setFooter({ text: `Page ${page + 1} of ${total + 1}`});
|
this.setFooter({ text: `Page ${page} of ${total}`});
|
||||||
|
|
||||||
this.row = new ActionRowBuilder<ButtonBuilder>();
|
this.row = new ActionRowBuilder<ButtonBuilder>();
|
||||||
|
|
||||||
this.row.addComponents(
|
this.row.addComponents(
|
||||||
new ButtonBuilder()
|
new ButtonBuilder()
|
||||||
.setCustomId(`pagination ${embedId} previous`)
|
.setCustomId(`pagination ${embedId} previous`)
|
||||||
.setLabel("◀️")
|
.setLabel("<")
|
||||||
.setStyle(ButtonStyle.Primary)
|
.setStyle(ButtonStyle.Primary)
|
||||||
.setDisabled(page == 0),
|
.setDisabled(page == 0),
|
||||||
new ButtonBuilder()
|
new ButtonBuilder()
|
||||||
.setCustomId(`pagination ${embedId} next`)
|
.setCustomId(`pagination ${embedId} next`)
|
||||||
.setLabel("▶️")
|
.setLabel(">")
|
||||||
.setStyle(ButtonStyle.Primary)
|
.setStyle(ButtonStyle.Primary)
|
||||||
.setDisabled(page == total));
|
.setDisabled(page == total));
|
||||||
}
|
}
|
||||||
|
@ -31,10 +31,9 @@ export default class EmbedPage extends EmbedBuilder {
|
||||||
}
|
}
|
||||||
|
|
||||||
public async sendButtonEmbed(interaction: ButtonInteraction) {
|
public async sendButtonEmbed(interaction: ButtonInteraction) {
|
||||||
await interaction.update({
|
await interaction.reply({
|
||||||
embeds: [ this ],
|
embeds: [ this ],
|
||||||
components: [ this.row ],
|
components: [ this.row ],
|
||||||
});
|
});
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,27 +1,14 @@
|
||||||
import { ButtonInteraction, CacheType } from "discord.js";
|
import { ButtonInteraction, CommandInteraction } from "discord.js";
|
||||||
import { Command } from "./command";
|
import { Command } from "./command";
|
||||||
import PaginatedEmbed from "../helpers/PaginatedEmbed";
|
|
||||||
import EmbedPage from "./embedPage";
|
|
||||||
|
|
||||||
export class PaginatedCommand<TPage extends EmbedPage> extends Command {
|
export class PaginatedCommand extends Command {
|
||||||
public CommandBuilder: any;
|
public CommandBuilder: any;
|
||||||
public paginatedEmbed: PaginatedEmbed<TPage>;
|
|
||||||
|
|
||||||
constructor() {
|
public async nextPage(interaction: ButtonInteraction) {
|
||||||
super();
|
|
||||||
|
|
||||||
this.paginatedEmbed = new PaginatedEmbed<TPage>("paginationtest");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async nextPage(interaction: ButtonInteraction<CacheType>) {
|
public async previousPage(interaction: ButtonInteraction) {
|
||||||
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