UNPKG

djs-button-pages

Version:

A simple yet powerful module for implementing customizable embed pages with buttons in Discord chat. Works only with Discord.js.

123 lines (98 loc) • 5.04 kB
<div align = "center"> <br /> <p> <a href = "https://i-moony.github.io/djs-button-pages/"><img src = "https://user-images.githubusercontent.com/80977522/174433134-54e6e9f6-b618-4d94-8552-5b5ba3c22a88.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=flat-square" 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=flat-square" 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=flat-square" alt = "github-issues" /></a> </p> </div> # šŸ“š About package: ### **Simple yet powerful and extensible module to create fully-customizable embed pages with buttons.** ā–¶ļø Works with [Discord.JS](https://www.npmjs.com/package/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](https://www.npmjs.com/package/@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)*. ```bash npm install djs-button-pages ``` ```bash yarn add djs-button-pages ``` ```bash pnpm install djs-button-pages ``` ### There are several other branches: - **djs14-legacy** - **djs13** - **djs13-legacy** # šŸ“ƒ Examples: ## Basic example: ```js //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](https://github.com/i-Moony/djs-button-pages) page. # ā” Links: * [GitHub](https://github.com/i-Moony/djs-button-pages) * [Documentation](https://i-moony.github.io/djs-button-pages/) * [NPM](https://www.npmjs.com/package/djs-button-pages) * [NotABug](https://notabug.org/m00ny/djs-button-pages) * [Discord.JS](https://discord.js.org/) * [Discord.JS Documenation](https://discord.js.org/#/docs/) * [Discord.JS Guide](https://discordjs.guide/) # šŸ› Bug Reporting: For bug reporting look for [GitHub Issues](https://github.com/i-Moony/djs-button-pages/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.