Current section
Files
Jump to
Current section
Files
lib/butler/bot.ex
defmodule Butler.Bot do
use GenServer
@adapter Application.get_env(:butler, :adapter)
@plugins Application.get_env(:butler, :plugins)
def start_link(event_manager) do
GenServer.start_link(__MODULE__, {event_manager}, [name: __MODULE__])
end
def notify(message) do
GenServer.cast(__MODULE__, {:notify, message})
end
def respond({response, original}) do
GenServer.cast(__MODULE__, {:respond, response, original})
end
def init({manager}) do
Enum.each(@plugins, fn({handler, state}) ->
GenEvent.add_mon_handler(manager, handler, state)
end)
{:ok, {manager}}
end
def handle_cast({:respond, response, original}, state) do
@adapter.send_message(response, original)
{:noreply, state}
end
def handle_cast({:notify, message}, {manager}=state) do
GenEvent.notify(manager, {:message, message})
{:noreply, state}
end
end