defmodule Nostrum.Struct.Webhook do @moduledoc """ Struct representing a Discord webhook. """ alias Nostrum.Struct.User @typedoc "Id of the webhook" @type id :: String.t() @typedoc "Guild the webhook is for" @type guild_id :: Guild.t() @typedoc "Channel the webhook is for" @type channel_id :: Channel.t() @typedoc "User who created the webhook" @type user :: User.t() @typedoc "Default name of the webhook" @type name :: integer @typedoc "Default avatar of the webhook" @type avatar :: integer @typedoc "Secure token of the webhook" @type token :: integer @type t :: %__MODULE__{ id: id, guild_id: guild_id, channel_id: channel_id, user: user, name: name, avatar: avatar, token: token } @derive [Poison.Encoder] defstruct [ :id, :guild_id, :channel_id, :user, :name, :avatar, :token ] @doc false def to_struct(map) do new = map |> Map.update(:user, %{}, &User.to_struct(&1)) struct(__MODULE__, new) end end