package chat import ( "context" "encoding/json" "fmt" "net/http" "net/url" "go.fifitido.net/twitch/api/endpoint" ) type GetChannelChatBadgesResponse struct { // The list of chat badges. The list is sorted in ascending order by set_id, and within a set, the list is sorted in ascending order by id. Data []Badge `json:"data"` } // Gets the broadcaster’s list of custom chat badges. The list is empty if the broadcaster hasn’t created custom chat badges. // For information about custom badges, // see subscriber badges: https://help.twitch.tv/s/article/subscriber-badge-guide // and Bits badges: https://help.twitch.tv/s/article/custom-bit-badges-guide. // // Requires an app access token or user access token. func (c *Chat) GetChannelChatBadges(ctx context.Context, broadcasterID string) (*GetChannelChatBadgesResponse, error) { v := url.Values{"broadcaster_id": {broadcasterID}} req, err := http.NewRequestWithContext(ctx, http.MethodGet, endpoint.Make(c.baseUrl, "chat/badges", v), nil) if err != nil { return nil, err } res, err := c.client.Do(req) if err != nil { return nil, err } defer res.Body.Close() statusOK := res.StatusCode >= 200 && res.StatusCode < 300 if !statusOK { return nil, fmt.Errorf("failed to get channel chat badges (%d)", res.StatusCode) } var data GetChannelChatBadgesResponse if err := json.NewDecoder(res.Body).Decode(&data); err != nil { return nil, err } return &data, nil }