Popularity
6.6
Declining
Activity
0.0
Stable
81
6
16

Monthly Downloads: 9
Programming language: Elixir
License: MIT License
Tags: Networking    
Latest version: v0.0.3

slacker alternatives and similar packages

Based on the "Networking" category.
Alternatively, view slacker alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of slacker or a related project?

Add another 'Networking' Package

README

Slacker

Slacker's an Elixir bot library for Slack.

It has chat matching functionality built-in, but you can extend it to handle all kinds of events.

Chat

Slacker can match regex or literal strings, then execute a given function (module optional).

defmodule TARS do
  use Slacker
  use Slacker.Matcher

  match ~r/Sense of humor\. New level setting: ([0-9]+)%/, :set_humor
  match "Great idea. A massive, sarcastic robot.", [CueLight, :turn_on]

  def set_humor(tars, msg, level) do
    reply = "Sense of humor set to #{level}"
    say tars, msg["channel"], reply
  end
end

Slacker will call your function with the matching message hash. You can use say/3 to respond, be sure to include the channel you want to talk to.

Extending Slacker

Your robot is really just a GenServer, you can catch RTM events from Slack and do whatever you like with them.

defmodule CASE do
  use Slacker

  def handle_cast({:handle_incoming, "presence_change", msg}, state) do
    say self, msg["channel"], "You're the man who brought us the probe?"
    {:noreply, state}
  end

end

You can also use Slack's "Web API" via the Slacker.Web module. All of the available RPC methods are downcased and underscored.

users.getPresence -> Slacker.Web.users_get_presence("your_api_key", user: "U1234567890")

Bootin' it up

Add this to your deps:

def deps do
  [{:websocket_client, github: "jeremyong/websocket_client"},
  {:slacker,  "~> 0.0.3"}]
end

Create a bot user in the Slack GUI, and then pass your api token to your bot's start_link/1:

{:ok, tars} = TARS.start_link("your_api_token")

It's up to you to supervise your brand new baby bot.

You're going to need to invite your bot to a channel by @-mentioning them.

Contributing

Gimme dem PR's.

Some of this stuff is a real pain in the ass to test, just do your best. :rocket:

TODO:

  • Keep a map of usernames to ids.
  • Keep a map of channel names to ids.
  • Private messaging support.
  • RTM tests.

License

See the LICENSE file. (MIT)


*Note that all licence references and agreements mentioned in the slacker README section above are relevant to that project's source code only.