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

m00ny 4e897f02e8 chore: update package version 1 年間 前
.github 513db521df chore: build script 1 年間 前
examples 1f89a2c754 docs: update examples 1 年間 前
packages 4e897f02e8 chore: update package version 1 年間 前
.eslintignore 2a5e44eda8 chore eslintignore: add examples folder 1 年間 前
.eslintrc 56a509ed4e Setted up a linter. 2 年 前
.gitignore 84d9b65214 chore: add .gitignore 1 年間 前
LICENSE.md d4887623a0 chore: add licenses 1 年間 前
README.md 929c728f02 chore: update README 1 年間 前
TODO.md b20f46b3ee chore: add TODO 1 年間 前
VERSIONING.md 417bc6ae9b chore: add versioning rules 1 年間 前
package-lock.json 79258f4a2d chore: deps 1 年間 前
package.json 7e27d8c043 chore: update package.json 1 年間 前
tsconfig.json f215d2c5ab chore: fix typescript module config 1 年間 前

README.md


logo

npm-version npm-downloads github-issues

📚 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 and they may be used in other projects.

📥 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');

//Array of embeds for pagination.
const embeds =
[
    new EmbedBuilder().setColor("Aqua").setTitle("Test!").setDescription("Whoosh! Your first page!"),
    new EmbedBuilder().setColor("Blurple").setTitle("Test!").setDescription("Wow! It's a second one!"),
    new EmbedBuilder().setColor("DarkAqua").setTitle("Test!").setDescription("Unbelivable! Third page is available to be bought for 20$!"),
    new EmbedBuilder().setColor("DarkGold").setTitle("Test!").setDescription("Not possible! This is my fourth page!"),
    new EmbedBuilder().setColor("Gold").setTitle("Test!").setDescription("Not probable! Special fifth page!"),
    new EmbedBuilder().setColor("DarkButNotBlack").setTitle("Test!").setDescription("Wow! Another page..."),
    new EmbedBuilder().setColor("White").setTitle("Test!").setDescription("Don't tell me that it is page number seven!"),
    new EmbedBuilder().setColor("Red").setTitle("Oh, wow!").setDescription("Looks like it is the last page("),
];

//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.
const client = new Client({intents: []});

//Ready!
client.once("ready", async () => {
    console.log("Ready!");

    //Fetch guild that is needed.
    const guild = await client.guilds.fetch("yourGuildId");

    //Add command.
    guild.commands.create({name: "pages", description: "Testing DJS-Button-Pages!"});
});

//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);
    };
});

//Login.
client.login("yourToken");

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

❔ Links:

🐛 Bug Reporting:

For bug reporting look for GitHub Issues.

Or you can DM me in Discord: moony#6815.

© License:

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

Licensed under the Apache License, Version 2.0.