https://github.com/cryptiklemur/discord-bot-base
Base bot for Discord
https://github.com/cryptiklemur/discord-bot-base
Last synced: about 1 year ago
JSON representation
Base bot for Discord
- Host: GitHub
- URL: https://github.com/cryptiklemur/discord-bot-base
- Owner: cryptiklemur
- License: mit
- Created: 2016-01-29T05:17:54.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2016-04-18T05:21:44.000Z (about 10 years ago)
- Last Synced: 2025-04-10T07:05:55.165Z (about 1 year ago)
- Language: JavaScript
- Size: 1.94 MB
- Stars: 10
- Watchers: 3
- Forks: 6
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# discord-bot-base
This is a base bot for Discord using Javascript.
## Installation
### Requirements
This module requires
Install with NPM
```bash
npm install --save discord-bot-base
```
## Usage
The goal of this repository, is to make it simple to create a bot, and add on commands. To get started just create an
instance of [`Bot`](blob/master/src/Bot.js).
```javascript
'use strict';
const BaseBot = require('discord-bot-base');
const TestCommand = require('./src/Command/TestCommand')
new BaseBot.Bot('dev', true, {
admin_id: '',
email: '',
password: '',
log_dir: '',
commands: [TestCommand],
prefix: "!",
});
```
The arguments passed to `Bot` are first, the `environment` (generally 'dev' or 'prod'), `debug` (adds extra logging), and
an array of `options`.
*The keys that are provided to `options` (`admin_id`, `email`, `password`, `commands`, and `prefix` are all required).*
Below is a list of options you can pass:
* `name` - Name of the bot. This is just for the output on the CLI. Not necessary, and will default to `discord-base-bot`
* `version` - Version of the bot. This is also just for the output on the CLI. Not necessary, and will default to the current version of `discord-base-bot`
* `author` - Author of the bot. This is again, just for the output on the CLI. Not necessary, and will default to the author of `discord-base-bot`
* `status` - Status of the bot. Will show up in the user list as "Playing "
* `email` - Login for the bot. This is required.
* `password` - Password for the bot. This is required.
* `prefix` - Prefix the bot will use for commands. This is required. Try not to use common characters if you plan to be on big servers.
* `admin_id` - User ID of the account you want to have access to admin commands. (e.g. the restart command)
* `container` - Advanced. For now, if you need to add this, message me in the discord api server. Required to use mysql/mongo/redis stuff.
* `commands` - An array of commands. The array should contain modules of commands. Check out an example below of a command.
* `mongo_url` - a Fully qualified mongo dsn. e.g. `mongodb://localhost/`
* `redis_url` - a Fully qualified redis dsn. e.g. `redis://localhost/`
* `queue` - An object of config variables for [rabbitmq](https://github.com/postwait/node-amqp#connection-options-and-url)
If you specify queue, you will be able to set up your bot with cluster support, with PM2.
### Command Example
Below, is what the Stats command looks like:
```javascript
const AbstractCommand = require('discord-base-bot').AbstractCommand;
class StatsCommand extends AbstractCommand {
static get name() { return 'stats'; }
static get description() { return "Shows the bot stats"; }
handle() {
this.responds(/^stats$/g, () => {
let servers = this.client.servers.length,
channels = this.client.channels.length,
users = this.client.users.length,
online = this.client.users.filter(u => u.status != "offline").length;
this.reply(
`Currently joined to: ${servers} servers with ${online}/${users} members and ${channels} text channels.`
);
});
}
}
module.exports = StatsCommand;
```
Take note of the static getters at the top. These are used for the help command.
All commands are required to extend [`AbstractCommand`](blob/master/src/Command/AbstractCommand.js). AbstractCommand provides a couple helper methods.
A few to note are:
* `responds` - Used when you want the bot to respond to a direct mention, or command. Takes a regex, with the second argument being a callback if a match was found. The callback is passed an array of matches.
* `hears` - Used when you want the bot to listen for a phrase. Takes a regex, with the second argument being a callback if a match was found. The callback is passed an array of matches.
* `sendMessage` - Shortcut for discord.js's client.sendMessage
* `reply` - Shortcut for discord.js's client.reply, just pass a message.
* `isThrottled` - Lets you throttle commands. Pass a key, and how long (in seconds) to throttle for.
* `handle` - This method is required for all commands as well. All your logic should go in here.