Fast, reliable and easy to use modern library to implement customizable embed pages in Discord Chat.

m00ny 180820f9a7 chore README: change badges and refine text 1 rok temu
.github 56ee3436b8 chore: merge build & test workflows 1 rok temu
assets a4b83dddc9 chore: convert showcase to gif 1 rok temu
examples 1f89a2c754 docs: update examples 1 rok temu
packages 6904bf7b44 chore: update package version 1 rok temu
.eslintignore 2a5e44eda8 chore eslintignore: add examples folder 1 rok temu
.eslintrc 56a509ed4e Setted up a linter. 2 lat temu
.gitattributes a4b83dddc9 chore: convert showcase to gif 1 rok temu
.gitignore 84d9b65214 chore: add .gitignore 1 rok temu
LICENSE.md d4887623a0 chore: add licenses 1 rok temu
README.md 180820f9a7 chore README: change badges and refine text 1 rok temu
TODO.md b20f46b3ee chore: add TODO 1 rok temu
VERSIONING.md 2f8dbd3956 chore: add versioining rules 1 rok temu
package-lock.json e4af2485e5 chore: deps 1 rok temu
package.json 2b0d40a3e6 chore: add jest 1 rok temu
tsconfig.json f215d2c5ab chore: fix typescript module config 1 rok temu

README.md

<br>
<p>
    <a href = "https://i-moony.github.io/djs-button-pages/">
        <img src = "./assets/djs-button-pages-cropped.png" alt = "logo" />
    </a>
</p>
<p>
    <a href = "https://www.npmjs.com/package/djs-button-pages">
        <img src = "https://img.shields.io/npm/v/djs-button-pages?color=FF4433&style=for-the-badge" alt = "npm-version" />
    </a>
    <a href = "https://www.npmjs.com/package/djs-button-pages">
        <img src = "https://img.shields.io/npm/dt/djs-button-pages?color=FF4433&style=for-the-badge" alt = "npm-downloads" />
    </a>
    <a href = "https://github.com/i-Moony/djs-button-pages">
        <img src = "https://img.shields.io/github/issues/i-Moony/djs-button-pages?color=FF4433&style=for-the-badge" alt = "github-issues" />
    </a>
</p>
<p>
    <a href = "https://discord.gg/WRKyCpHRAP">
        <img src = "https://img.shields.io/discord/1094672489180844164?color=%235164e3&label=Discord&logo=Discord&logoColor=%23FFFFFF&style=for-the-badge" />
    </a>
</p>
<img src = "./assets/showcase.gif" alt = "Library in action" title = "Library in action" />


📚 About package:

Simple yet powerful and extensible module to create fully-customizable embed pages with buttons.

▶️ Works with Discord.JS. Supports v14. Legacy versions support v13 and v14.

▶️ This packages supports creation of custom buttons with your own scripts through a simple API.

▶️ If you want some pre-built buttons consider using @djs-button-pages/presets. They contain basic ones (But you can contribute some of your own to this package if you want to).

📥 Installation:

Requires Node 16.9 (because of Discord.JS).

npm install djs-button-pages
yarn add djs-button-pages
pnpm install djs-button-pages

There are several other branches:

  • djs14-legacy
  • djs13
  • djs13-legacy

📃 Examples:

Basic example:

// Imports.
const { Client, EmbedBuilder, ButtonStyle } = require("discord.js");
const { PaginationWrapper } = require("djs-button-pages");
// Pre-made buttons.
const { NextPageButton, PreviousPageButton } = require('@djs-button-pages/presets');

const embeds =
[
    // Array of embeds for pagination.
];

// Array of buttons for pagination.
const buttons =
[
    new PreviousPageButton
    ({
        custom_id: "prev_page",
        emoji: "◀",
        style: ButtonStyle.Secondary
    }),
    new NextPageButton
    ({
        custom_id: "next_page",
        emoji: "▶",
        style: ButtonStyle.Secondary
    }),
];

// No intents needed for this example.
const client = new Client({intents: []});

// Catch command.
client.on("interactionCreate", async (interaction) => {
    if (interaction.isCommand() && interaction.commandName === "pages")
    {
        // Setup pagination.
        const pagination = new PaginationWrapper()
            .setButtons(buttons)
            .setEmbeds(embeds)
            .setTime(60000);

        // Send it as a reply to interaction.
        await pagination.interactionReply(interaction);
        // Everything else will be done for you!
    };
});

More interesting examples with commentary can be found at GitHub page.

❔ Links:

🐛 Bug Reporting:

For bug reporting look for GitHub Issues.

If you need support, you can join my Discord Server.

© License:

Copyright © 2022 Danila Kononov (nickname: moony). All rights reserved.

Licensed under the Apache License, Version 2.0.