npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@barry-bot/core

v1.0.1

Published

A toolkit for building advanced Discord bots.

Downloads

8

Readme

Banner Barry

NPM Build Coverage Contribute License

About

@barry-bot/core serves as the beating heart of Barry, a versatile and user-friendly Discord bot designed to assist and enhance the workflow of creatives. With a focus on flexibility and extensibility, it offers a powerful foundation for building feature-rich bots with ease.

Features

  • Command Handling: Simplify the management of commands with built-in support for slash, message, and user commands. Easily define and handle commands, with automatic argument parsing for seamless user input processing.
  • Modular System: Organize your bot's functionality into modules, each can have its own set of commands and event listeners, providing the flexibility to swap in and out functionality as needed.
  • Support for Gateway & HTTP: Enjoy the best of both worlds with support for both Gateway events and HTTP interactions. Choose whatever suits your needs, whether you prefer the real-time nature of Gateway events or the scalability of HTTP interactions.
  • Stability and Compatibility: @barry-bot/core strives to stay close to the Discord API, minimizing breaking changes and ensuring compatibility with the latest Discord features and updates. This allows you to build your bot with confidence, knowing that it will continue to function reliably.

Installation

Node.js version 20 or later is required.

npm install @barry-bot/core
# or
yarn add @barry-bot/core

Example Usage

import { Client, FastifyServer, Module, SlashCommand } from "@barry-bot/core";
import { API } from "@discordjs/core";
import { REST } from "@discordjs/rest";

// Basic module & command
class GeneralModule extends Module {
    constructor(client) {
        super(client, {
            id: "general",
            name: "General",
            description: "Provides general functionality and commands.",
            commands: [PingCommand]
        });
    }
}

class PingCommand extends SlashCommand {
    constructor(module) {
        super(module, {
            name: "ping",
            description: "Shows the latency of the bot."
        });
    }

    async execute(interaction) {
        await interaction.createMessage({
            content: "Pong! 🏓"
        });
    }
}

// Initialize the server.
const server = new FastifyServer({
    publicKey: "PUBLIC_KEY"
});

// Initialize the client.
const rest = new REST().setToken("TOKEN");
const api = new API(rest);

const client = new Client({
    api: api,
    applicationID: "APPLICATION_ID",
    modules: [GeneralModule],
    server: server
});

// Start the server.
await server.listen(3000, "localhost");

// Start the client.
await client.initialize();
await client.commands.sync();

Contributing

Contributions, bug reports, and feature requests are welcome! Please refer to the contribution guidelines for detailed information on how to contribute to the project.

Even if you're not a developer, you can still support the project in other ways. Consider donating to my Ko-fi page to show your appreciation and help me continue improving Barry. Every contribution is highly appreciated!

ko-fi

License

This package is licensed under the MIT License. See the LICENSE file for more information.

Please note that the licenses may differ between different parts of the project. Make sure to refer to the appropriate license file for each component.