defmodule Teac.EventSub.AdBreak do @moduledoc """ Represents a `channel.ad_break.begin` EventSub event. Use `from_event/1` in your `Teac.WssClient.Handler` callback to convert the raw event map to a typed struct. """ @type t :: %__MODULE__{ broadcaster_user_id: String.t(), broadcaster_username: String.t(), requester_user_id: String.t(), requester_username: String.t(), duration_seconds: non_neg_integer(), started_at: String.t(), is_automatic: boolean() } defstruct [ :broadcaster_user_id, :broadcaster_username, :requester_user_id, :requester_username, :duration_seconds, :started_at, :is_automatic ] @doc """ Parses a raw `channel.ad_break.begin` event map into a `%AdBreak{}`. """ @spec from_event(map()) :: t() def from_event(event) do %__MODULE__{ broadcaster_user_id: event["broadcaster_user_id"], broadcaster_username: event["broadcaster_user_name"], requester_user_id: event["requester_user_id"], requester_username: event["requester_user_name"], duration_seconds: event["duration_seconds"], started_at: event["started_at"], is_automatic: event["is_automatic"] } end end