Skip to content

Latest commit

 

History

History
206 lines (162 loc) · 6.09 KB

README.md

File metadata and controls

206 lines (162 loc) · 6.09 KB



Highlights

Using Templates

To use templates use the following command in your terminal:

npm create reciple@latest

After that configure the template you want to use. Learn More

CLI usage

Usage: reciple [options] [command]

Reciple is a Discord.js bot framework

Options:
  -v, --version    output the version number
  --env <file>     Set .env file path (default: [".env"])
  --debug          Enable debug mode (default: false)
  --cwd <dir>      Set current working directory (default: "./")
  -h, --help       display help for command

Commands:
  shard [options]  Starts in sharding mode
  start [options]  Starts the bot
  help [command]   display help for command

Message Commands

Reciple provides a built-in MessageCommandBuilder class that can be used for message command handler.

Read Docs

import { MessageCommandBuilder } from 'reciple';

new MessageCommandBuilder()
    .setName("command")
    .setDescription("Your lil tiny description")
    .addAliases("cmd", "cmd1")
    .setExecute(command => command.message.reply("Hello!"));

Validate Message Command Options

Read Docs

import { MessageCommandBuilder } from 'reciple';

new MessageCommandBuilder()
    .setName("command")
    .setDescription("Your lil tiny description")
    .addAliases("cmd", "cmd1")
    .setValidateOptions(true) // Validate options
    .addOption(option => option
        .setName("quantity")
        .setDescription("Must be a number")
        .setRequired(true) // A required option
        .setValidate(({ value }) => !isNaN(Number(value))) // Validate value
        .setResolveValue(({ value }) => Number(value)) // Resolves the option value
    )
    .setExecute(async command => {
        /**
         * @type {number}
         */
        const quantity = await data.options.getOptionValue('number', { required: true, resolveValue: true });;
        await command.message.reply("Quantity: " + quantity);
    });

Context Menus

Reciple provides extended ContextMenuCommandBuilder class that can be used for context menu command handler.

Read Docs

import { ApplicationCommandType } from 'discord.js';
import { ContextMenuCommandBuilder } from 'reciple';

new ContextMenuCommandBuilder()
    .setName("Ban")
    .setType(ApplicationCommandType.User)
    .setExecute(async ({ interaction }) => {
        if (!interaction.inCachedGuild()) return;

        await interaction.deferReply();
        await interaction.targetMember.ban();
        await interaction.editReply(`Banned ${interaction.targetUser}`);
    });

Slash Commands

Reciple provides extended SlashCommandBuilder class that can be used for slash command handler. Read Docs

import { SlashCommandMenuBuilder } from 'reciple';

new SlashCommandBuilder()
    .setName("ping")
    .setDescription("Pong")
    .setExecute(async ({ interaction }) => {
        await interaction.reply(`Pong!`);
    });

Command Cooldowns

Read Docs

import { ContextMenuCommandBuilder, MessageCommandBuilder, SlashCommandBuilder } from 'reciple';
import { ApplicationCommandType } from 'discord.js';

new ContextMenuCommandBuilder()
    .setName("Context Menu")
    .setType(ApplicationCommandType.Message)
    .setCooldown(1000 * 5) // 5 seconds cooldown
    .setExecute(async ({ interaction }) => {
        await interaction.reply(`Hello!`);
    });

new MessageCommandBuilder()
    .setName("message-command")
    .setDescription(`Your command`)
    .setCooldown(1000 * 5) // 5 seconds cooldown
    .setExecute(async ({ message }) => {
        await message.reply(`Hello!`);
    });

new SlashCommandBuilder()
    .setName("slash-command")
    .setDescription(`Your command`)
    .setCooldown(1000 * 5) // 5 seconds cooldown
    .setExecute(async ({ interaction }) => {
        await interaction.reply(`Hello!`);
    });

Config

You can configure the bot in reciple.mjs usually located in the bot's root directory.

Token

You can change the token in config.

token: "Your Token" // Directly set token string
token: process.env.TOKEN // Use env variable

You can override the given token as cli flag

reciple --token "YOUR_TOKEN_HERE"
reciple --token "env:TOKEN_VARIABLE"

Fun Fact

The name reciple is from a minecraft bug. The bug was a misspelling of the word recipe. View Mojang Bug Report