public async Task Subscribe() { //First, detect and unsubsribe from lingering webhooks TokenRequest tokenContainer = await helixHelper.GetClientCredentialsToken(); TwitchWebhookResponse subscriptions = await helixHelper.GetWebhookSubscriptions(tokenContainer.AccessToken); if (subscriptions.Data is not null && subscriptions.Data.Count > 0) { communication.SendWarningMessage($"Unsubscribing from {subscriptions.Data.Count} existing webhooks"); foreach (TwitchWebhookResponse.Datum datum in subscriptions.Data) { bool success = await helixHelper.WebhookSubscribe( callback : datum.Callback, mode : "unsubscribe", topic : datum.Topic, lease : 0, secret : ""); if (!success) { communication.SendWarningMessage($"Failed to unsub {datum.Callback} from: {datum.Topic}"); } } } foreach (IWebSubSubscriber subscriber in webSubSubscribers) { await subscriber.Subscribe(this); } }