private void ForMessage(StreamlabsEvent streamlabsEvent, object eventData) { switch (streamlabsEvent.For) { case "streamlabs": if (streamlabsEvent.Type == "donation") { var donation = JsonConvert.DeserializeObject <StreamlabsEvent <DonationMessage> >(eventData.ToString()); _logger?.LogDebug($"Donation deserialized successfully"); OnDonation?.Invoke(this, donation); } break; case "twitch_account": { switch (streamlabsEvent.Type) { case "follow": { var follow = JsonConvert.DeserializeObject <StreamlabsEvent <TwitchFollowMessage> >(eventData.ToString()); _logger?.LogDebug($"Twitch Follow deserialized successfully"); OnTwitchFollow?.Invoke(this, follow); } break; case "subscription": { var sub = JsonConvert.DeserializeObject <StreamlabsEvent <TwitchSubscriptionMessage> >(eventData.ToString()); _logger?.LogDebug($"Twitch Sub deserialized successfully"); OnTwitchSubscription?.Invoke(this, sub); } break; case "host": { var host = JsonConvert.DeserializeObject <StreamlabsEvent <TwitchHostMessage> >(eventData.ToString()); _logger?.LogDebug($"Twitch Host deserialized successfully"); OnTwitchHost?.Invoke(this, host); } break; case "bits": { var cheer = JsonConvert.DeserializeObject <StreamlabsEvent <TwitchCheerMessage> >(eventData.ToString()); _logger?.LogDebug($"Twitch Cheer deserialized successfully"); OnTwitchCheer?.Invoke(this, cheer); } break; } } break; case "youtube_account": { switch (streamlabsEvent.Type) { case "follow": { var follow = JsonConvert.DeserializeObject <StreamlabsEvent <YouTubeSubscriptionMessage> >(eventData.ToString()); _logger?.LogDebug($"YouTube Sub deserialized successfully"); OnYouTubeSubscription?.Invoke(this, follow); } break; case "subscription": { var sub = JsonConvert.DeserializeObject <StreamlabsEvent <YouTubeSponsorMessage> >(eventData.ToString()); _logger?.LogDebug($"YouTube Sponsor deserialized successfully"); OnYouTubeSponsor?.Invoke(this, sub); } break; case "superchat": { var super = JsonConvert.DeserializeObject <StreamlabsEvent <YouTubeSuperchatMessage> >(eventData.ToString()); _logger?.LogDebug($"YouTube Superchat deserialized successfully"); OnYouTubeSuperchat?.Invoke(this, super); } break; } } break; case "mixer_account": { switch (streamlabsEvent.Type) { case "follow": { var follow = JsonConvert.DeserializeObject <StreamlabsEvent <MixerFollowMessage> >(eventData.ToString()); _logger?.LogDebug($"Mixer Follow deserialized successfully"); OnMixerFollow?.Invoke(this, follow); } break; case "subscription": { var sub = JsonConvert.DeserializeObject <StreamlabsEvent <MixerSubscriptionMessage> >(eventData.ToString()); _logger?.LogDebug($"Mixer Sub deserialized successfully"); OnMixerSubscription?.Invoke(this, sub); } break; case "host": { var host = JsonConvert.DeserializeObject <StreamlabsEvent <MixerHostMessage> >(eventData.ToString()); _logger?.LogDebug($"Mixer Host deserialized successfully"); OnMixerHost?.Invoke(this, host); } break; } } break; } }