discljord.events

Functions for getting events off of a queue and processing them.

dispatch-handlers

(dispatch-handlers handlers event-type event-data & args)
Calls event handlers from `handlers` with the event and `args`.

The `handlers` argument is a map from a keyword event type to a vector of
event handler functions (with additional arguments filled by `args`) to be run
in sequence.

message-pump!

(message-pump! event-ch handle-event)
Starts a process which pulls events off of the channel and calls
handle-event with them, and stops when it sees a :disconnect event.
This takes control of the current thread.

The handle-event function takes the keyword event type, and the event
data.

normalize-handlers

(normalize-handlers handlers)
Constructs a `handlers` map for [[dispatch-handlers]], allowing sets for keys.

Keyword keys are kept as-is, but sets will be split into their members to
allow keying the handler map off of a single event type. This is done in an
undefined order, so duplicate keys have an undefined precidence.