0.0.4 • Published 2 years ago

@reinforz/cordmand v0.0.4

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

Cordmand

About

A utility package for making discord-bot commands much easier to write with discord.js.

Usage Example

Install this package:

npm i @reinforz/cordmand

or,

yarn add @reinforz/cordmand

Example typescript file:

import { Client, GatewayIntentBits } from "discord.js";
import { addCommands } from "@reinforz/cordmand";
import { Commands } from "@reinforz/cordmand/types";

// initiate discord.js client
const client = new Client({
  intents: [
    GatewayIntentBits.Guilds,
    GatewayIntentBits.GuildMessages,
    GatewayIntentBits.MessageContent,
    GatewayIntentBits.GuildMembers,
  ],
});

// define your commands similar to
const commands: Commands = {
  interactionCreate: [
    // define interactions here
    {
      name: "ping",
      cb: async (interaction) => {
        await interaction.reply("Pong!");
      },
    },
    {
      name: "hello",
      message: {
        content: "hello",
        ephemeral: true,
      },
    },
  ],

  messageCreate: [
    {
      regex: /ping/i,
      message: "pong",
    },
    {
      regex: /hi/i,
      // message can also be a callback function which can access the discord message object
      message: (_, message) => `hello <@${message.author.id}>`,
    },
    {
      regex: /bye/i,
      message: (_, message) => `bye ${message.author.username}`,
      reply: true, // uses discord's message.reply intead of just sending the message in the same channel
    },
    {
      regex: /args/i,
      message: (args) => `The arguments are: ${args.join(", ")}`,
      reply: true, 
    },
  ],
};

// add commands to the client by calling the addCommands function provided by the client
addCommands(client, commands, {
  messageCommandPrefix: /^i!/i,
  // Add your command prefix regex. Make sure to include ^ (starts with) in the regex
});

// login
client.login(process.env.BOT_TOKEN!);

Example with just using makeDiscordClient function:

import { makeDiscordClient } from "@reinforz/cordmand";
import { Commands, MakeDiscordClientOptions } from "@reinforz/cordmand/types";
import { commands } from "./some-file"

const makeClientOptions: MakeDiscordClientOptions = {
  botToken: process.env.BOT_TOKEN!,
  clientOptions: {
    intents: ["Guilds", "GuildMessages", "MessageContent", "GuildMembers"],
  },
  commands, // the same command object as previous one, It will work in the same way as the previous example
  addCommandsOptions: {
    messageCommandPrefix: /^i!/i,
  },
};

makeDiscordClient(makeClientOptions);

Contributors