Archived
154 lines
5.2 KiB
Markdown
154 lines
5.2 KiB
Markdown
# CommandBot
|
|
|
|
A Discord.js based framework that makes creating Discord bots easy and fast.
|
|
|
|
# Table of contents
|
|
|
|
- [Instalation](#installation)
|
|
- [System requirements](#system-requirements)
|
|
- [Creating a project](#creating-a-project)
|
|
- [Registering Discord app](#registering-discord-app)
|
|
- [Creating application](#creating-application)
|
|
- [Commands](#commands)
|
|
|
|
# Installation
|
|
|
|
## System requirements
|
|
|
|
- _Node.js_ 16.6.0 or newer
|
|
- _npm_ or _yarn_ package manager
|
|
|
|
## Creating a project
|
|
|
|
### Registering Discord app
|
|
|
|
1. Visit [Discord Developer Portal](https://discord.com/developers/) and create an app
|
|
2. Navigate to the _Bot_ section and register a bot
|
|
3. Navigate to _OAuth 2_ section, select _bot_ and _application.commands_ scopes and check bot permissions
|
|
4. Copy the link and add your bot to the servers
|
|
|
|
### Creating application
|
|
|
|
1. Create empty directory
|
|
2. Run `npm init -y` or `yarn init -y`
|
|
3. Add the CommandBot package
|
|
|
|
```javascript
|
|
// npm
|
|
npm install commandbot@latest
|
|
|
|
// yarn
|
|
yarn add commandbot@latest
|
|
```
|
|
|
|
4. Create _index.js_ file
|
|
5. Import the CommandBot package
|
|
|
|
```javascript
|
|
// CommonJS
|
|
const { Bot, Command } = require("commandbot");
|
|
|
|
// ES Modules (to use ESM add "type": "module" to your package.json file)
|
|
import { Bot, Command } from "commandbot";
|
|
```
|
|
|
|
6. Initialize the bot instance
|
|
|
|
```javascript
|
|
const bot = new Bot({
|
|
name: "YOUR_BOT_NAME",
|
|
prefix: "BOT_PREFIX",
|
|
parameterSeparator: ",",
|
|
clientOptions: {
|
|
intents: [..."DISCORD_API_INTENTS"],
|
|
},
|
|
token: "DISCORD_BOT_TOKEN",
|
|
applicationId: "APPLICATION_ID",
|
|
});
|
|
```
|
|
|
|
Properties (\* - required):
|
|
|
|
- name\* - _string_ - bot name
|
|
- prefix - _string_ - bot prefix to use with text commands (if undefined, only slash commands will be available)
|
|
- parameterSeparator - _string_ - used to separate parameters from messages (default: ',')
|
|
- clientOptions - _[ClientOptions](https://discord.js.org/#/docs/main/stable/typedef/ClientOptions)_ - Discord.js client options
|
|
- token\* - _string_ - Discord bot token
|
|
- applicationId\* - _string_ - Discord application ID
|
|
|
|
7. Create and add commands to the _Bot_ instance (see [Commands](#commands))
|
|
8. Start your bot
|
|
|
|
```javascript
|
|
bot.start(
|
|
port, // If passed, the application will create a HTTP server
|
|
true // If true or undefined, the app will register all slash commands in the Discord API
|
|
);
|
|
```
|
|
|
|
# Commands
|
|
|
|
To create a command, initialize a _Command_ object
|
|
|
|
Example:
|
|
|
|
```javascript
|
|
const cmdGreet = new Command({
|
|
name: "greet",
|
|
parameters: [
|
|
{
|
|
name: "name",
|
|
description: "Name that will be greeted",
|
|
optional: true,
|
|
type: "string",
|
|
},
|
|
],
|
|
aliases: ["hello"],
|
|
description: "Welcomes someone",
|
|
usage: "[name]",
|
|
permissionCheck: "ALL",
|
|
permissions: ["SEND_MESSAGES"],
|
|
guilds: undefined,
|
|
visible: true,
|
|
slash: true,
|
|
annouceSuccess: true,
|
|
function: function(p. m) {
|
|
if(p('name')) {
|
|
return `Hello, ${p('name')}!`
|
|
}
|
|
else {
|
|
return 'Hello!'
|
|
}
|
|
}
|
|
});
|
|
|
|
// Register
|
|
bot.commands.add(cmdGreet)
|
|
```
|
|
|
|
Properties (\* - required):
|
|
|
|
- name\* - _string_ - command name
|
|
- parameters - _ParameterSchema[]_ - list of parameters (see [Parameters](#parameters))
|
|
- aliases - _string | string[]_ - list of alternative strings that can call this command (not available for slash commands)
|
|
- description - _string_ - command description
|
|
- usage - _string_ - command usage visible in the help message (if not defined, usage string will be automatically generated based on defined parameters)
|
|
- permissionCheck - _"ALL" | "ANY"_ - whether to check if caller has all defined permission or at least one of them
|
|
- permissions - _[PermissionResolvable](https://discord.js.org/#/docs/main/stable/typedef/PermissionResolvable) | (m?: [Message](https://discord.js.org/#/docs/main/stable/class/Message) | [CommandInteraction](https://discord.js.org/#/docs/main/stable/class/CommandInteraction)) => boolean_ - permissions required to run this command
|
|
- guilds - _string[]_ - list of servers IDs in which this command will be available (if slash command)
|
|
- visible - _boolean_ - whether this command is visible in the help message
|
|
- slash - _boolean_ - whether this command should be registered as a slash command
|
|
- announceSuccess - _boolean_ - whether a command reply should be sent automatically if no other response is defined or the reply should be deleted
|
|
- function\* - _(p: function, m?: [Message](https://discord.js.org/#/docs/main/stable/class/Message) | [CommandInteraction](https://discord.js.org/#/docs/main/stable/class/CommandInteraction)) => void | [MessageEmbed]() | string | [ReplyMessageOptions](https://discord.js.org/#/docs/main/stable/typedef/ReplyMessageOptions)_ - function that will be executed on call
|
|
- Arguments
|
|
- - p - _function_ - call this function with parameter name to fetch parameter value
|
|
- m? - _[Message](https://discord.js.org/#/docs/main/stable/class/Message) | [CommandInteraction](https://discord.js.org/#/docs/main/stable/class/CommandInteraction)_ - interaction object
|
|
|
|
Register your command in bot client using:
|
|
|
|
```javascript
|
|
bot.commands.add(cmd);
|
|
```
|
|
|
|
where _cmd_ is your _Command_ object
|