Current section

Files

Jump to
crux_structs lib structs emoji.ex
Raw

lib/structs/emoji.ex

defmodule Crux.Structs.Emoji do
@moduledoc """
Represents a Discord [Emoji Object](https://discordapp.com/developers/docs/resources/emoji#emoji-object-emoji-structure).
"""
alias Crux.Structs.Util
defstruct(
animated: nil,
id: nil,
name: nil,
roles: nil,
user: nil,
require_colons: nil,
managed: nil
)
@type t :: %__MODULE__{
animated: boolean(),
id: integer(),
name: String.t(),
roles: MapSet.t(integer()),
user: integer(),
require_colons: boolean(),
managed: boolean()
}
@doc false
def create(data) do
data =
data
|> Util.atomify()
|> Map.update(:id, nil, &Util.id_to_int/1)
|> Map.update(:roles, [], &MapSet.new(&1, fn role -> Util.id_to_int(role) end))
|> Map.update(:user, nil, fn user -> Map.get(user, :id) |> Util.id_to_int() end)
struct(__MODULE__, data)
end
end