defmodule Irc.User do @moduledoc """ Represents an IRC user. Not all field may be returned in events. """ defstruct [ :nick, :user, :host, :name, :account, :server, :idle, :away, :connected_at, {:operator, false}, {:modes, []}, {:chanmodes, %{}}, {:channels, []}, ] @type t :: %__MODULE__{ nick: String.t(), user: nil | String.t(), host: nil | String.t(), name: nil | String.t(), account: nil | String.t(), server: nil | String.t(), idle: nil | {non_neg_integer(), NaiveDateTime.t()}, operator: boolean(), modes: [], channels: [], chanmodes: %{String.t() => String.t()} } def from_mask(%Irc.Mask{user: user, nick: nick, host: host}) when is_binary(nick) do %__MODULE__{nick: nick, user: user, host: host} end def to_mask(%__MODULE__{nick: nick, user: user, host: host}) do Irc.Mask.new(nick, user, host) end end