JSPM

discbot-factory

2.2.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 2
  • Score
    100M100P100Q43320F
  • License MIT

Discord chat bot pre-builded core.

Package Exports

  • discbot-factory

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (discbot-factory) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

DISCBOT-FACTORY

A helper tool to create discord bots with discord.js.

Pre builded modules like queue and voice. Simple implementations ways.

Creating a instance

// src/index.ts

import { Core } from "discbot-factory";

const bot: Core = new Core("<bot-name>", "<prefix>", {});

bot.authClient("<token>");

Creating commands

// src/commands/HelloWorldCommand.ts

import { ICommand, Command } from "discbot-factory";

export default class HelloWorldCommand implements ICommand {
  public readonly name: string = "hello"; // execute with <prefix>hello "!hello"
  public readonly description: string = "The hello world command";

  public execute(command: Command): void { 
    const author: string = command.message.author.username;

    command.message.channel.send(`Hello world, ${author}!`);
  }
}

Registering commands

// src/index.ts

import { Core } from "discbot-factory";

import HelloWorldCommand from "./commands/HelloWorldCommand";

const bot: Core = new Core("<bot-name>", "<prefix>", {
  commands: [new HelloWorldCommand()],
  middlewares: [],
  events: [],
});

bot.authClient("<token>");

Modules

Voice

A pre-builded voice module for create voice channel interactions.

import { Voice } from "discbot-factory";

const voice: Voice = new Voice("youtube"); // local or youtuber player.

async function playMusic(voiceChannel: VoiceChannel): Promise<void> {
  await voice.connect(voiceChannel);
  // if you are using local player, just pass the sound path.
  await voice.play("https://www.youtube.com/watch?v=mH_z5vAkf2c");

  voice.onEnd((): void => {
    console.log("Finished!");
  });
}

Queue

A queue module, nice to use with voice module and to create cool experiences like mini-games.

import { Queue } from "discbot-factory";

const queue: Queue<string> = new Queue<string>();

queue.putOnTop("hello");
queue.putOnBottom("oh no, I'm the last");

// get the first item
console.log(queue.get()) // hello

queue.removeHead();

console.log(queue.get()) // oh no, I'm the last

queue.clear();

console.log(queue.getAll()); // []

Public events

Equivalent to a client.on("event", callback) implementation.

import { IEvent, PublicEvent } from "discbot-factory";

import { Message } from "discord.js";

export default class MessageDeleteEvent implements IEvent<Message, {}, {}> {
  public readonly name: PublicEvent = PublicEvent.MESSAGE_DELETE;
  public readonly description: string = "On message delete event";

  public execute(message: Message): void {
    console.log(message.content);
  }
}

Using Middlewares

import IMiddleware from "../Core/IMiddleware";
import { Command } from "../Core/ICommand";

export default class AdminMiddleware implements IMiddleware {
  constructor(public readonly forCommands: Array<string>) {}

  public middle(command: Command): boolean {
    const username: string = command.message.author.username;

    if (username === "another dan") {
      return true;
    }

    command.message.react("🚫");
    return false;
  }
}