private async Task <bool> UntrackPlayerAsync(ulong guildId) { EnsureNotDisposed(); if (!_players.Remove(guildId)) { // player was not tracked return(false); } var player = _audioService.GetPlayer(guildId); if (player is null) { // unknown player return(false); } // trigger event var args = new PlayerTrackingStatusUpdateEventArgs( _audioService, player, InactivityTrackingStatus.Untracked); await OnPlayerTrackingStatusUpdated(args); return(true); }
/// <summary> /// Triggers the <see cref="PlayerTrackingStatusUpdated"/> event asynchronously. /// </summary> /// <param name="eventArgs">the event arguments</param> /// <returns>a task that represents the asynchronous operation</returns> protected virtual Task OnPlayerTrackingStatusUpdated(PlayerTrackingStatusUpdateEventArgs eventArgs) => PlayerTrackingStatusUpdated.InvokeAsync(this, eventArgs);