Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/willrax/marvin

:space_invader: Slack bots using Elixir.
https://github.com/willrax/marvin

Last synced: 14 days ago
JSON representation

:space_invader: Slack bots using Elixir.

Awesome Lists containing this project

README

        

# Marvin

Slack bots using Elixir.

## Installation

If [available in Hex](https://hex.pm/docs/publish), the package can be installed as:

1. Add Marvin to your list of dependencies in `mix.exs`:

```elixir
def deps do
[
{:marvin, "~> 0.3.1"},
{:websocket_client, git: "https://github.com/jeremyong/websocket_client"}
]
end
```

You'll need to add `websocket_client` manually.

2. Ensure marvin is started before your application:

```elixir
def application do
[applications: [:marvin]]
end
```

You'll need to set your bots Slack token in your applications config file.

```elixir
config :marvin, slack_token: "secret"
```

## Creating Bots

Bots are simple to create and can respond to mentions, direct messages and ambient conversation.

```elixir
defmodule EchoBot do
use Marvin.Bot

# Here you can set a specific type of message and a regex pattern to match against
# Direct includes mentions and direct discussions with the bot. Patterns are case
# sensitive by default.

match {:direct, ~r/hello/}

def handle_message(message, slack) do
send_message("Hi!", message.channel, slack)
end
end
```

Next you'll need to tell Marvin to start your bots by adding them to your config file.

```elixir
config :marvin, bots: [EchoBot]
```

You can also capture reactions being applied to a message.

```elixir
defmodule EchoBot do
use Marvin.Bot

match {:reaction, "coin"}

def handle_message(message, slack) do
IO.puts "A coin was given"
end
end