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 }