From 8b9188b2c0ac192150201c511944d68862275f69 Mon Sep 17 00:00:00 2001 From: ilotterytea Date: Tue, 14 Oct 2025 22:34:59 +0500 Subject: feat: get bttv emotes --- internal/emotes.go | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 internal/emotes.go (limited to 'internal/emotes.go') diff --git a/internal/emotes.go b/internal/emotes.go new file mode 100644 index 0000000..d85eca2 --- /dev/null +++ b/internal/emotes.go @@ -0,0 +1,47 @@ +package stats + +import ( + "encoding/json" + "fmt" + "net/http" +) + +type Emote struct { + Id string + Name string +} + +func GetBetterTTVEmotes(channelId string) (emotes []Emote, err error) { + resp, err := http.Get(fmt.Sprintf("https://api.betterttv.net/3/cached/users/twitch/%s", channelId)) + if err != nil { + return + } + defer resp.Body.Close() + + var data map[string]any + if err = json.NewDecoder(resp.Body).Decode(&data); err != nil { + return + } + + if msg, ok := data["message"]; ok { + err = fmt.Errorf("error while searching user: %s", msg) + return + } + + ejson := []map[string]any{} + for _, v := range data["channelEmotes"].([]any) { + ejson = append(ejson, v.(map[string]any)) + } + for _, v := range data["sharedEmotes"].([]any) { + ejson = append(ejson, v.(map[string]any)) + } + + for _, e := range ejson { + emotes = append(emotes, Emote{ + Id: e["id"].(string), + Name: e["code"].(string), + }) + } + + return +} -- cgit v1.2.3