Skip to content

Latest commit

 

History

History

core

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

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.