Current section

Files

Jump to
crux_structs lib structs presence.ex
Raw

lib/structs/presence.ex

defmodule Crux.Structs.Presence do
@moduledoc """
Represents a Discord [Presence Object](https://discordapp.com/developers/docs/topics/gateway#presence-update-presence-update-event-fields).
"""
@behaviour Crux.Structs
alias Crux.Structs.Util
defstruct(
user: nil,
# roles: [],
game: nil,
# guild_id: nil,
status: "offline"
)
@type t :: %__MODULE__{
user: integer(),
# roles: [integer()],
game: map() | nil,
# guild_id: integer() | nil,
status: String.t()
}
@doc """
Creates a `Crux.Structs.Presence` struct from raw data.
> Automatically invoked by `Crux.Structs.create/2`.
"""
def create(data) do
data =
data
|> Util.atomify()
|> Map.update!(:user, fn user -> Map.get(user, :id) |> Util.id_to_int() end)
struct(__MODULE__, data)
end
end