Mercurial > public > pacobot
diff cmd/events.go @ 6:4deabe76bd7f
cmd: add CMD package
author | Dennis C. M. <dennis@denniscm.com> |
---|---|
date | Wed, 12 Mar 2025 14:13:24 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cmd/events.go Wed Mar 12 14:13:24 2025 +0000 @@ -0,0 +1,82 @@ +package cmd + +import ( + "bytes" + "encoding/json" + "io" + "log" + "net/http" + "net/url" +) + +type ChannelChatMsgSubPayload struct { + Payload struct { + Event struct { + Msg struct { + Text string `json:"text"` + } `json:"message"` + } `json:"event"` + } `json:"payload"` +} + +func ChannelChatMsgSub(authToken, session_id string) { + config := readConfig() + + data := map[string]interface{}{ + "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) + } + + 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 := 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) + } + + defer res.Body.Close() + + body, err := io.ReadAll(res.Body) + + if err != nil { + log.Fatal(err) + } + + log.Println(string(body)) +}