Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const generateContainer = async (
- invites: Invite[],
- pageIndex: number = 0,
- ) => {
- const container = new ContainerBuilder()
- .setAccentColor(colors.container.background)
- .addTextDisplayComponents((display) =>
- display.setContent(
- translate(locale, {
- EN: `## ${user.displayName}'s active Invites`,
- FR: `## Invitations actives de ${user.displayName}`,
- }),
- ),
- )
- .addSeparatorComponents((s) => s);
- if (invitesPages.length === 0) {
- container.addTextDisplayComponents((display) =>
- display.setContent(
- translate(locale, {
- EN: "> *This member has no active invites.*",
- FR: "> *Ce membre n'a pas d'invitations actives.*",
- }),
- ),
- );
- return container;
- }
- const inviteSelectMenu = new StringSelectMenuBuilder()
- .setCustomId(
- interactionCommandId({
- key: "invite-tracker:invite-info",
- type: "select",
- valueName: "inviteCode",
- ephemeral: true,
- action: "reply",
- }),
- )
- .setPlaceholder(
- translate(locale, {
- EN: "Select an invite to view more details",
- FR: "Sélectionnez une invitation pour voir plus de détails",
- }),
- )
- .setMaxValues(1)
- .setOptions(
- invites.map((inv, i) => ({
- label: `#${pageIndex * PER_PAGE + i + 1}. Code: ${inv.code}`,
- value: inv.code,
- })),
- );
- container.addActionRowComponents((row) =>
- row.addComponents(inviteSelectMenu),
- );
- container.addSeparatorComponents((s) => s);
- let lines = [];
- for (let i = 0; i < invites.length; i++) {
- const inv = invites[i];
- let str = `> **${i + 1 + pageIndex * PER_PAGE}.** \`${inv.code}\``;
- if (inv.uses !== null) {
- str += translate(locale, {
- EN: ` used **${inv.uses.toLocaleString(locale)}**`,
- FR: ` utilisé **${inv.uses.toLocaleString(locale)}**`,
- });
- }
- if (inv.maxUses && inv.maxUses > 0)
- str += `/**${inv.maxUses.toLocaleString(locale)}**`;
- if (inv.uses !== null) {
- str += translate(locale, {
- EN: ` time${inv.uses! > 1 ? "s" : ""}`,
- FR: ` fois`,
- });
- }
- str += translate(locale, {
- EN: `, created <t:${Math.floor(inv.createdTimestamp! / 1000)}:R>`,
- FR: `, créé <t:${Math.floor(inv.createdTimestamp! / 1000)}:R>`,
- });
- if (inv.expiresTimestamp)
- str += translate(locale, {
- EN: `, expires <t:${Math.floor(inv.expiresTimestamp! / 1000)}:R>`,
- FR: `, expire <t:${Math.floor(inv.expiresTimestamp! / 1000)}:R>`,
- });
- lines.push(str);
- }
- container.addTextDisplayComponents((display) =>
- display.setContent(lines.join("\n")),
- );
- return container;
- };
Advertisement
Add Comment
Please, Sign In to add comment