👾 Slack bots using Elixir.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
config
lib
test
.gitignore
README.md
mix.exs
mix.lock

README.md

Marvin

Slack bots using Elixir.

Installation

If available in Hex, the package can be installed as:

  1. Add Marvin to your list of dependencies in mix.exs:
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.

  1. Ensure marvin is started before your application:
def application do
  [applications: [:marvin]]
end

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

config :marvin, slack_token: "secret"

Creating Bots

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

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.

config :marvin, bots: [EchoBot]

You can also capture reactions being applied to a message.

defmodule EchoBot do
  use Marvin.Bot

  match {:reaction, "coin"}

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