Mercurial > public > pacobot
diff event/events.go @ 8:e9df3bb010f4
fix issues
author | Dennis C. M. <dennis@denniscm.com> |
---|---|
date | Thu, 13 Mar 2025 17:41:42 +0000 |
parents | cmd/events.go@4deabe76bd7f |
children | aaf85ae1f942 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/event/events.go Thu Mar 13 17:41:42 2025 +0000 @@ -0,0 +1,74 @@ +package event + +import ( + "bytes" + "encoding/json" + "log" + "net/http" + "net/url" + + "github.com/denniscmcom/pacobot/auth" +) + +func ChannelChatMsgSub(authToken, session_id string) { + config := auth.ReadConfig() + + data := map[string]any{ + "type": "channel.chat.message", + "version": "1", + "condition": map[string]string{ + "broadcaster_user_id": config.BroadcasterUserId, + "user_id": config.BroadcasterUserId, + }, + "transport": map[string]string{ + "method": "websocket", + "session_id": session_id, + }, + } + + jsonData, err := json.Marshal(data) + + if err != nil { + log.Fatal(err) + } + + log.Printf("event: subscribing to %s", data["type"]) + eventSub(authToken, jsonData) +} + +func eventSub(authToken string, subData []byte) { + baseUrl := &url.URL{ + Scheme: "https", + Host: "api.twitch.tv", + Path: "helix/eventsub/subscriptions", + } + + req, err := http.NewRequest("POST", baseUrl.String(), bytes.NewBuffer(subData)) + + if err != nil { + log.Fatal(err) + } + + config := auth.ReadConfig() + + req.Header.Set("Authorization", "Bearer "+authToken) + req.Header.Set("Client-Id", config.ClientId) + req.Header.Set("Content-Type", "application/json") + + client := &http.Client{} + res, err := client.Do(req) + + if err != nil { + log.Fatal(err) + } + + log.Printf("status code: %d", res.StatusCode) + + if res.StatusCode != 202 { + log.Fatal("event: failed to subscribe to event") + } + + log.Println("event: subscribed") + + defer res.Body.Close() +}