Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | import { Content } from "@/types"; import { LOCALIZATION_ADAPTER, NestedLocalizationAdapter } from "@necord/localization"; import { ButtonsAppearance, NecordPaginationService, PageBuilder } from "@necord/pagination"; import { Inject, Injectable } from "@nestjs/common"; import { ButtonStyle, CommandInteraction, EmbedBuilder } from "discord.js"; import type { INDBService } from "./interfaces/INDBService"; @Injectable() export class NDBService implements INDBService { public constructor( @Inject(LOCALIZATION_ADAPTER) private readonly translate: NestedLocalizationAdapter, private readonly paginator: NecordPaginationService, ) {} public async buildPaginator(interaction: CommandInteraction, embeds: EmbedBuilder[], id: string): Promise<Content> { const buttons: ButtonsAppearance = { back: { emoji: "⬅️", label: this.translate.getTranslation("Tools.Paginator.Labels.Previous", interaction.guildLocale), style: ButtonStyle.Secondary, }, next: { emoji: "➡️", label: this.translate.getTranslation("Tools.Paginator.Labels.Next", interaction.guildLocale), style: ButtonStyle.Secondary, }, }; this.paginator.delete(id); for (let i = 0; i < embeds.length; i++) { embeds[i].setFooter({ text: embeds[i].data.footer?.text ? `${embeds[i].data.footer?.text} | ${this.translate.getTranslation( "Tools.Paginator.Embed.Footer", interaction.guildLocale, { Current: String(i + 1), Total: String(embeds.length), }, )}` : this.translate.getTranslation("Tools.Paginator.Embed.Footer", interaction.guildLocale, { Current: String(i + 1), Total: String(embeds.length), }), }); } const pages: PageBuilder[] = []; for (const embed of embeds) { pages.push(new PageBuilder().addEmbed(embed)); } return this.paginator .register((builder) => builder.setCustomId(id).setPages(pages).setMaxPages(embeds.length)) .setButtonsAppearance(buttons) .build(); } } |