Mercurial > public > pacobot
comparison 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 |
comparison
equal
deleted
inserted
replaced
5:8cf3011fc949 | 6:4deabe76bd7f |
---|---|
1 package cmd | |
2 | |
3 import ( | |
4 "bytes" | |
5 "encoding/json" | |
6 "io" | |
7 "log" | |
8 "net/http" | |
9 "net/url" | |
10 ) | |
11 | |
12 type ChannelChatMsgSubPayload struct { | |
13 Payload struct { | |
14 Event struct { | |
15 Msg struct { | |
16 Text string `json:"text"` | |
17 } `json:"message"` | |
18 } `json:"event"` | |
19 } `json:"payload"` | |
20 } | |
21 | |
22 func ChannelChatMsgSub(authToken, session_id string) { | |
23 config := readConfig() | |
24 | |
25 data := map[string]interface{}{ | |
26 "type": "channel.chat.message", | |
27 "version": "1", | |
28 "condition": map[string]string{ | |
29 "broadcaster_user_id": config.BroadcasterUserId, | |
30 "user_id": config.BroadcasterUserId, | |
31 }, | |
32 "transport": map[string]string{ | |
33 "method": "websocket", | |
34 "session_id": session_id, | |
35 }, | |
36 } | |
37 | |
38 jsonData, err := json.Marshal(data) | |
39 | |
40 if err != nil { | |
41 log.Fatal(err) | |
42 } | |
43 | |
44 eventSub(authToken, jsonData) | |
45 } | |
46 | |
47 func eventSub(authToken string, subData []byte) { | |
48 baseUrl := &url.URL{ | |
49 Scheme: "https", | |
50 Host: "api.twitch.tv", | |
51 Path: "helix/eventsub/subscriptions", | |
52 } | |
53 | |
54 req, err := http.NewRequest("POST", baseUrl.String(), bytes.NewBuffer(subData)) | |
55 | |
56 if err != nil { | |
57 log.Fatal(err) | |
58 } | |
59 | |
60 config := readConfig() | |
61 | |
62 req.Header.Set("Authorization", "Bearer "+authToken) | |
63 req.Header.Set("Client-Id", config.ClientId) | |
64 req.Header.Set("Content-Type", "application/json") | |
65 | |
66 client := &http.Client{} | |
67 res, err := client.Do(req) | |
68 | |
69 if err != nil { | |
70 log.Fatal(err) | |
71 } | |
72 | |
73 defer res.Body.Close() | |
74 | |
75 body, err := io.ReadAll(res.Body) | |
76 | |
77 if err != nil { | |
78 log.Fatal(err) | |
79 } | |
80 | |
81 log.Println(string(body)) | |
82 } |