1.4.0 • Published 3 years ago

detritus-pagination v1.4.0

Weekly downloads
-
License
ISC
Repository
-
Last release
3 years ago

detritus-pagination

An easy-to-use paginator for the Discord API Wrapper Detritus.

Using CommandClient

By default, CommandClient#client returns a ClusterClient, which is a class that manages ShardClients. To make it work with detritus-pagination, either set useClusterClient to false in the CommandClient constructor, or use PaginatorCluster instead. It maintains a WeakMap<ShardClient, Paginator> internally.

Examples

// Imports
const { ShardClient } = require("detritus-client");
const { Paginator } = require("detritus-pagination");

// Detritus Client
const client = new ShardClient("token");

// Pagination Handler
const paginator = new Paginator(client, {
    // Maximum number of milliseconds for the bot to paginate
    // It is recommended not to set this too high
    // Defaults to 300000ms (5 minutes)
    maxTime: 300000,
    // Whether it should jump back to page 1 if the user tried to go past the last page
    // Defaults to false
    pageLoop: true,
    // Whether a page number should be shown in embed footers
    // If a string is passed as page, it will append the page number to the string
    pageNumber: true
});

// Reactions that will be passed in paginator.createReactionPaginator lateron
// This is optional and default emojis will be used if no `reactions` object is passed
const reactions = {
    previousPage: "⬅️",
    nextPage: "➡️"
};

const createEmbedMessage = (title, description) => ({
    embed: { title, description }
});

// Message event for commands 
client.on("messageCreate", async ctx => {
    const { message } = ctx;
    if (message.content === "!!test") {
        // Pages for this command
        const pages = [
            createEmbedMessage("Hello", ":)"),
            createEmbedMessage("Bye", ":(")
        ];

        // Create a ReactionPaginator
        const paging = await paginator.createReactionPaginator({
            // message is the message the user has sent
            message,
            // pages is an array of pages (will be passed as parameter in Message#edit)
            pages,
            // reactions is an object that includes `previousPage` and `nextPage` emojis (defined above)
            reactions
        });

        // You can also listen to events!
        // `next` event is fired when the user reacts with next page emoji
        // `previous` event is fired when the user reacts with previous page emoji
        paging.on("next", () => {
            message.reply("`next` event triggered");
        });

        paging.on("previous", () => {
            message.reply("`previous` event triggered");
        })

        paging.on("page", data => {
            message.reply(`skipped to page ${data.page}`);
        });
    }
});

// Run the client
(async () => {
    await client.run();
    console.log("Ready!");
})();
1.4.0

3 years ago

1.3.3

4 years ago

1.3.2

4 years ago

1.3.1

4 years ago

1.3.0

4 years ago

1.2.2

4 years ago

1.2.1

4 years ago

1.2.0

4 years ago

1.1.2

4 years ago

1.1.1

4 years ago

1.1.0

4 years ago

1.0.73

4 years ago

1.0.72

4 years ago

1.0.71

4 years ago

1.0.7

4 years ago

1.0.6

4 years ago

1.0.5

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago