summaryrefslogtreecommitdiff
path: root/lib/irc/client/command/away.ex
blob: da8b5ef2abea9bdeb36ad57343726fb3b8375514 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
defmodule Irc.Client.Command.Away do
  alias Irc.Parser.Line

  @type t :: away :: {:away, Irc.Mask.t, String.t} | unaway :: {:away, Irc.Mask.t}

  def init() do
    {"AWAY", :away, "away-notify"}
  end

  def handle_command(:away, args, _) do
    command = case args do
      [] -> ['AWAY']
      [message] -> ['AWAY :', message]
    end
    {:send, command}
  end

  def handle_line(%Line{command: "AWAY", source: source, args: args}, _) do
    case args do
      [] -> {:event, {:away, source}}
      [message] -> {:event, {:away, {source, message}}}
    end
  end

end