Fast, reliable and easy to use modern library to implement customizable embed pages in Discord Chat.
m00ny 4e897f02e8 chore: update package version | 1 year ago | |
---|---|---|
.github | 2 years ago | |
examples | 2 years ago | |
packages | 1 year ago | |
.eslintignore | 2 years ago | |
.eslintrc | 2 years ago | |
.gitignore | 2 years ago | |
LICENSE.md | 2 years ago | |
README.md | 2 years ago | |
TODO.md | 2 years ago | |
VERSIONING.md | 2 years ago | |
package-lock.json | 2 years ago | |
package.json | 2 years ago | |
tsconfig.json | 2 years ago |
▶️ 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.
npm install djs-button-pages
yarn add djs-button-pages
pnpm install djs-button-pages
//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");
For bug reporting look for GitHub Issues.
Or you can DM me in Discord: moony#6815
.
Copyright © 2022 Danila Kononov (nickname: moony). All rights reserved.
Licensed under the Apache License, Version 2.0.