package api type ( EventSubMetadata struct { MessageID string `json:"message_id"` MessageType string `json:"message_type"` MessageTimestamp string `json:"message_timestamp"` } EventSubSession struct { ID string `json:"id"` Status string `json:"status"` KeepaliveTimeoutSeconds int `json:"keepalive_timeout_seconds"` ReconnectURL string `json:"reconnect_url"` ConnectedAt string `json:"connected_at"` } EventSubSubscriptionTransport struct { Method string `json:"method"` SessionID string `json:"session_id"` } EventSubSubscription struct { ID string `json:"id"` Status string `json:"status"` Type string `json:"type"` Version string `json:"version"` Cost int `json:"cost"` Condition any `json:"condition"` Transport EventSubSubscriptionTransport `json:"transport"` CreatedAt string `json:"connected_at"` } EventSubPayload struct { Session *EventSubSession `json:"session"` Subscription *EventSubSubscription `json:"subscription"` Event any `json:"event"` } EventSubMessage struct { Metadata EventSubMetadata `json:"metadata"` Payload EventSubPayload `json:"payload"` } ) type MessageType string const ( BASE_URL string = "https://api.twitch.tv/helix" EVENTSUB_URL string = "wss://eventsub.wss.twitch.tv/ws" SESSION_WELCOME MessageType = "session_welcome" SESSION_KEEPALIVE MessageType = "session_keepalive" NOTIFICATION MessageType = "notification" SESSION_RECONNECT MessageType = "session_reconnect" SESSION_RECOVATION MessageType = "session_revocation" )