defmodule LineMessage.Macro do defmacro __using__(_) do quote do import LineMessage.Macro alias LineMessage.Event alias LineMessage.Message alias LineMessage.Reply end end defmacro message(type, [do: block]) do quote do event_on("message", unquote(type), fn event -> unquote(block) end) end end def event_on(event_type, message_type, func) do LineMessage.Event.on(event_type, fn event -> if event.type == Atom.to_string(message_type) do func.(event) end end) end end