diff --git a/src/Lavalink4NET.InactivityTracking/Trackers/UsersInactivityTracker.cs b/src/Lavalink4NET.InactivityTracking/Trackers/UsersInactivityTracker.cs index 7b6caa1f..bf3ac4a8 100644 --- a/src/Lavalink4NET.InactivityTracking/Trackers/UsersInactivityTracker.cs +++ b/src/Lavalink4NET.InactivityTracking/Trackers/UsersInactivityTracker.cs @@ -16,13 +16,8 @@ public async ValueTask CheckAsync(InactivityTrackingContex { var includeBots = !_options.ExcludeBots.GetValueOrDefault(true); - if (context.Player.VoiceChannelId is null) - { - return PlayerActivityStatus.Inactive; - } - var usersInChannel = await context.Client - .GetChannelUsersAsync(context.Player.GuildId, context.Player.VoiceChannelId.Value, includeBots, cancellationToken) + .GetChannelUsersAsync(context.Player.GuildId, context.Player.VoiceChannelId, includeBots, cancellationToken) .ConfigureAwait(false); return usersInChannel.Length >= _options.Threshold.GetValueOrDefault(1) diff --git a/src/Lavalink4NET/Players/ILavalinkPlayer.cs b/src/Lavalink4NET/Players/ILavalinkPlayer.cs index 14a51986..94268a60 100644 --- a/src/Lavalink4NET/Players/ILavalinkPlayer.cs +++ b/src/Lavalink4NET/Players/ILavalinkPlayer.cs @@ -26,7 +26,7 @@ public interface ILavalinkPlayer : IAsyncDisposable PlayerState State { get; } - ulong? VoiceChannelId { get; } + ulong VoiceChannelId { get; } PlayerConnectionState ConnectionState { get; } diff --git a/src/Lavalink4NET/Players/LavalinkPlayer.cs b/src/Lavalink4NET/Players/LavalinkPlayer.cs index b3664a18..3318110a 100644 --- a/src/Lavalink4NET/Players/LavalinkPlayer.cs +++ b/src/Lavalink4NET/Players/LavalinkPlayer.cs @@ -86,7 +86,7 @@ public TrackPosition? Position _ => PlayerState.Playing, }; - public ulong? VoiceChannelId { get; private set; } + public ulong VoiceChannelId { get; private set; } public float Volume { get; private set; } @@ -102,13 +102,16 @@ public TrackPosition? Position async ValueTask ILavalinkPlayerListener.NotifyChannelUpdateAsync(ulong? voiceChannelId, CancellationToken cancellationToken) { - EnsureNotDestroyed(); - if (voiceChannelId is null) { _logger.PlayerDisconnected(_label); + await using var _ = this.ConfigureAwait(false); + return; } - else if (!_connectedOnce || VoiceChannelId is null) + + EnsureNotDestroyed(); + + if (!_connectedOnce) { _connectedOnce = true; _logger.PlayerConnected(_label, voiceChannelId); @@ -118,7 +121,7 @@ async ValueTask ILavalinkPlayerListener.NotifyChannelUpdateAsync(ulong? voiceCha _logger.PlayerMoved(_label, voiceChannelId); } - VoiceChannelId = voiceChannelId; + VoiceChannelId = voiceChannelId.Value; try { diff --git a/src/Lavalink4NET/Players/Vote/UserVoteResult.cs b/src/Lavalink4NET/Players/Vote/UserVoteResult.cs index 9c423df7..2ae0a66b 100644 --- a/src/Lavalink4NET/Players/Vote/UserVoteResult.cs +++ b/src/Lavalink4NET/Players/Vote/UserVoteResult.cs @@ -4,7 +4,6 @@ public enum UserVoteResult : byte { Submitted, Skipped, - NotConnected, AlreadySubmitted, UserNotInChannel, } diff --git a/src/Lavalink4NET/Players/Vote/VoteLavalinkPlayer.cs b/src/Lavalink4NET/Players/Vote/VoteLavalinkPlayer.cs index ba322dd5..3dd8e599 100644 --- a/src/Lavalink4NET/Players/Vote/VoteLavalinkPlayer.cs +++ b/src/Lavalink4NET/Players/Vote/VoteLavalinkPlayer.cs @@ -46,16 +46,8 @@ public async ValueTask GetVotesAsync(CancellationToken canc { cancellationToken.ThrowIfCancellationRequested(); - if (VoiceChannelId is null) - { - return new VoteSkipInformation( - Votes: ImmutableArray.Empty, - TotalUsers: 0, - Percentage: 0.0F); - } - var channelUsers = await _discordClient - .GetChannelUsersAsync(GuildId, VoiceChannelId.Value, includeBots: false, cancellationToken) + .GetChannelUsersAsync(GuildId, VoiceChannelId, includeBots: false, cancellationToken) .ConfigureAwait(false); return await ComputeAsync(channelUsers, cancellationToken).ConfigureAwait(false); @@ -98,13 +90,8 @@ public virtual async ValueTask VoteAsync(ulong userId, UserVoteO { cancellationToken.ThrowIfCancellationRequested(); - if (VoiceChannelId is null) - { - return UserVoteResult.NotConnected; - } - var channelUsers = await _discordClient - .GetChannelUsersAsync(GuildId, VoiceChannelId.Value, includeBots: false, cancellationToken) + .GetChannelUsersAsync(GuildId, VoiceChannelId, includeBots: false, cancellationToken) .ConfigureAwait(false); if (_requireUserToBeInVoiceChannel && !channelUsers.Contains(userId))