Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/iam4x/diskord

JavaScript library to simply create a Discord bot
https://github.com/iam4x/diskord

bot discord javascrit library

Last synced: 19 days ago
JSON representation

JavaScript library to simply create a Discord bot

Awesome Lists containing this project

README

        

# Diskord 🤖

> JavaScript/Node.js library to create simple answer bots for [Discord](https://discordapp.com/) messaging app
>
> **This library is not production bullet-proof ready, use at your own risk**

![Simple Discord Bot](./example.gif)

* `$ npm install -S diskord` OR
* `$ yarn add diskord`

## Requirements

* Nodejs v6
* A discord bot token ([guide how to get one](https://github.com/reactiflux/discord-irc/wiki/Creating-a-discord-bot-&-getting-a-token))

## Usage

### Create your bot instance

First, you will need to create your bot instance aka login to the bot.

```js
const Diskord = require('diskord');
const bot = new Diskord({ token: 'XXXX' });
```

### Register a simple answer

Then you can create actions, theses actions will react to a message sent by a user. You can filter actions to trigger them only on a specified channel or a server.

Let's create a simple action, the ping request:

```js
bot.registerAction({
trigger: 'ping',
action: 'pong'
});
```

> Writing `ping` or `!ping` in the channel where the bot is present will trigger the action.

### Register an action with a function

For more complex operations you can register a function to your action:

```js
bot.registerAction({
trigger: 'hi',
action: function(params) {
// params = {
// author: {},
// args: string[],
// reply: Function
// }
reply(`Welcome ${params.author.username}! How are you?`);
}
});
```

### Register an action accepting arguments

Most of the time you want user to interact with the bot by providing options, it's easy to do it:

```js
bot.registerAction({
trigger: 'weather',
action: function(params) {
const city = params.args[0];
if (!city) return reply('Usage: !weather Paris');

[...]

reply(`The temperature in ${city} is ...`);
}
});
```

## API

### `new Diskord(SimpleBotOptions)`

```js
SimpleBotOptions = {
token: 'XXXX' // Secret bot token
}
```

### `registerAction(Action)`

```js
Action = {
trigger: string // Message (with or without prefix '!') to match
action: string | ActionFunction // Action to start on when trigger match
}

ActionFunction = function(params) {
// params = {
// author: { username: string },
// args: string[],
// reply: Function
// }
}
```

## TODO

* [ ] Spam protection
* [ ] Documentation on how to make great messages
* [ ] Support of attachment in answers
* [ ] Ideas? Create an issue!