defmodule Nostrum.Struct.Event.GuildIntegrationDelete do
@moduledoc """
Event fired when a guild integration is deleted.
"""
@moduledoc since: "0.5.1"
alias Nostrum.Struct.Guild
alias Nostrum.Struct.Guild.Integration
alias Nostrum.Struct.Guild.Integration.Application, as: IntegrationApplication
alias Nostrum.{Snowflake, Util}
defstruct [:id, :guild_id, :application_id]
@typedoc """
The id of the deleted integration.
"""
@type id :: Integration.id()
@typedoc """
The id of the guild the integration is in.
"""
@type guild_id :: Guild.id()
@typedoc """
id of the bot/OAuth2 application for this discord integration
"""
@type application_id :: IntegrationApplication.id() | nil
@type t :: %__MODULE__{
id: id,
guild_id: guild_id,
application_id: application_id
}
@doc false
@spec to_struct(map()) :: __MODULE__.t()
def to_struct(map) do
new =
map
|> Map.new(fn {k, v} -> {Util.maybe_to_atom(k), v} end)
|> Map.update(:id, nil, &Util.cast(&1, Snowflake))
|> Map.update(:guild_id, nil, &Util.cast(&1, Snowflake))
|> Map.update(:application_id, nil, &Util.cast(&1, Snowflake))
struct(__MODULE__, new)
end
end