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);