alice v0.3.4 Alice.Router.Helpers

Helpers to make replying easier in handlers

Summary

Functions

Delay a reply. Alice will show to be typing while the message is delayed

Indicate typing

Takes a conn and a list of possible response in any order. Replies with a random element of the list provided

Reply to a message in a handler

Macros

Adds a command to the handler

Adds a route to the handler

Functions

chance_reply(conn, chance, positive, negative \\ :noreply)

Specs

chance_reply(Alice.Conn.t, float, String.t, String.t) :: Alice.Conn.t

Reply with random chance.

Examples

> chance_reply(conn, 0.5, "sent half the time")
> chance_reply(conn, 0.25, "sent 25% of the time", "sent 75% of the time")
delayed_reply(msg, ms, milliseconds)

Specs

delayed_reply(String.t, integer, Alice.Conn.t) :: Task.t
delayed_reply(Alice.Conn.t, String.t, integer) :: Task.t

Delay a reply. Alice will show to be typing while the message is delayed.

The conn can be passed in first or last.

Returns the task, not a conn. If you need to get the conn, you can use Task.await(task), but this will block the handle process until the delay finishes. If you don’t need the updated conn, simply return the conn that was passed to delayed_reply.

Examples

def hello(conn) do
  "hello" |> delayed_reply(1000, conn)
  conn
end

def hello(conn) do
  task = delayed_reply(conn, "hello", 1000)
  # other work...
  Task.await(task)
end
indicate_typing(conn)

Specs

indicate_typing(Alice.Conn.t) :: Alice.Conn.t

Indicate typing.

match_pattern(arg1, arg2)
random_reply(list, list)

Specs

random_reply(Alice.Conn.t, list) :: Alice.Conn.t
random_reply(list, Alice.Conn.t) :: Alice.Conn.t

Takes a conn and a list of possible response in any order. Replies with a random element of the list provided.

reply(resp, resp)

Specs

reply(%Alice.Conn{message: term, slack: term, state: term}, [String.t, ...]) :: Alice.Conn.t
reply([String.t, ...], %Alice.Conn{message: term, slack: term, state: term}) :: Alice.Conn.t
reply(%Alice.Conn{message: term, slack: term, state: term}, String.t) :: Alice.Conn.t
reply(String.t, %Alice.Conn{message: term, slack: term, state: term}) :: Alice.Conn.t

Reply to a message in a handler.

Takes a conn and a response string in any order. Sends response back to the channel that triggered the handler.

Adds random tag to end of image urls to break Slack’s img cache.

Macros

command(pattern, name)

Adds a command to the handler

route(pattern, name)

Adds a route to the handler