package main import ( "fmt" "os" "strings" "github.com/nicklaw5/helix/v2" "golang.org/x/oauth2/clientcredentials" ) const DEBUG bool = false const USERNAME string = "venomade98" // TODO: Make configurable var ( dataDir = fmt.Sprintf("%s/.local/share/lifesigns", os.Getenv("HOME")) clientSecrets = Secrets(fmt.Sprintf("%s/secrets", dataDir)) // Fix Hardcodes oauth2Config *clientcredentials.Config ) func main() { userTokens := Auth(fmt.Sprintf("%s/auth", dataDir)); client, err := helix.NewClient(&helix.Options{ ClientID: clientSecrets.ClientID, ClientSecret: clientSecrets.ClientSecret, AppAccessToken: GetAppToken(), UserAccessToken: userTokens.AccessToken, RefreshToken: userTokens.RefreshToken, }) if err != nil { panic(err) } resp, err := client.GetFollowedStream(&helix.FollowedStreamsParams{ UserID: GetUserID(client), }) var output strings.Builder for _, channel := range resp.Data.Streams { output.WriteString(fmt.Sprintf("%s ", channel.UserName)) } fmt.Println(fmt.Sprintf(" %s", strings.TrimSpace(output.String()))) } func GetUserID(client *helix.Client) string{ resp, err := client.GetUsers(&helix.UsersParams { Logins: []string{"venomade98"}, }) if err != nil { panic(err) } if DEBUG { fmt.Printf("Status code: %d\n", resp.StatusCode) fmt.Printf("Error: %s\n", resp.ErrorMessage) fmt.Printf("Rate limit: %d\n", resp.GetRateLimit()) fmt.Printf("Rate limit remaining: %d\n", resp.GetRateLimitRemaining()) fmt.Printf("Rate limit reset: %d\n\n", resp.GetRateLimitReset()) } var uid string; for _, user := range resp.Data.Users { uid = string(user.ID) } return uid }