6
|
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 }
|