diff --git a/src/Discord.Net.Core/Entities/Channels/IVoiceChannel.cs b/src/Discord.Net.Core/Entities/Channels/IVoiceChannel.cs
index d25576c65..80c90e4bd 100644
--- a/src/Discord.Net.Core/Entities/Channels/IVoiceChannel.cs
+++ b/src/Discord.Net.Core/Entities/Channels/IVoiceChannel.cs
@@ -8,8 +8,8 @@ namespace Discord
{
/// Gets the bitrate, in bits per second, clients in this voice channel are requested to use.
int Bitrate { get; }
- /// Gets the max amount of users allowed to be connected to this channel at one time. A value of 0 represents no limit.
- int UserLimit { get; }
+ /// Gets the max amount of users allowed to be connected to this channel at one time.
+ int? UserLimit { get; }
/// Modifies this voice channel.
Task ModifyAsync(Action func, RequestOptions options = null);
diff --git a/src/Discord.Net.Core/Entities/Channels/VoiceChannelProperties.cs b/src/Discord.Net.Core/Entities/Channels/VoiceChannelProperties.cs
index 3294ad146..81dd8063e 100644
--- a/src/Discord.Net.Core/Entities/Channels/VoiceChannelProperties.cs
+++ b/src/Discord.Net.Core/Entities/Channels/VoiceChannelProperties.cs
@@ -10,6 +10,6 @@
///
/// The maximum number of users that can be present in a channel.
///
- public Optional UserLimit { get; set; }
+ public Optional UserLimit { get; set; }
}
}
diff --git a/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs b/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs
index 5ddf044c6..b7d81c579 100644
--- a/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs
+++ b/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs
@@ -56,7 +56,7 @@ namespace Discord.Rest
Bitrate = args.Bitrate,
Name = args.Name,
Position = args.Position,
- UserLimit = args.UserLimit
+ UserLimit = args.UserLimit.IsSpecified ? (args.UserLimit.Value ?? 0) : Optional.Create()
};
return await client.ApiClient.ModifyGuildChannelAsync(channel.Id, apiArgs, options).ConfigureAwait(false);
}
diff --git a/src/Discord.Net.Rest/Entities/Channels/RestVoiceChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestVoiceChannel.cs
index dd4f59deb..e5330f29e 100644
--- a/src/Discord.Net.Rest/Entities/Channels/RestVoiceChannel.cs
+++ b/src/Discord.Net.Rest/Entities/Channels/RestVoiceChannel.cs
@@ -1,5 +1,4 @@
-using Discord.API.Rest;
-using Discord.Audio;
+using Discord.Audio;
using System;
using System.Collections.Generic;
using System.Diagnostics;
@@ -13,7 +12,7 @@ namespace Discord.Rest
public class RestVoiceChannel : RestGuildChannel, IVoiceChannel, IRestAudioChannel
{
public int Bitrate { get; private set; }
- public int UserLimit { get; private set; }
+ public int? UserLimit { get; private set; }
internal RestVoiceChannel(BaseDiscordClient discord, IGuild guild, ulong id)
: base(discord, guild, id)
@@ -30,7 +29,7 @@ namespace Discord.Rest
base.Update(model);
Bitrate = model.Bitrate.Value;
- UserLimit = model.UserLimit.Value;
+ UserLimit = model.UserLimit.Value != 0 ? model.UserLimit.Value : (int?)null;
}
public async Task ModifyAsync(Action func, RequestOptions options = null)
diff --git a/src/Discord.Net.Rpc/Entities/Channels/RpcVoiceChannel.cs b/src/Discord.Net.Rpc/Entities/Channels/RpcVoiceChannel.cs
index ed05e2f57..3d5acfda9 100644
--- a/src/Discord.Net.Rpc/Entities/Channels/RpcVoiceChannel.cs
+++ b/src/Discord.Net.Rpc/Entities/Channels/RpcVoiceChannel.cs
@@ -1,5 +1,4 @@
-using Discord.API.Rest;
-using Discord.Audio;
+using Discord.Audio;
using Discord.Rest;
using System;
using System.Collections.Generic;
@@ -14,8 +13,8 @@ namespace Discord.Rpc
[DebuggerDisplay(@"{DebuggerDisplay,nq}")]
public class RpcVoiceChannel : RpcGuildChannel, IRpcAudioChannel, IVoiceChannel
{
- public int UserLimit { get; private set; }
public int Bitrate { get; private set; }
+ public int? UserLimit { get; private set; }
public IReadOnlyCollection VoiceStates { get; private set; }
internal RpcVoiceChannel(DiscordRpcClient discord, ulong id, ulong guildId)
@@ -32,7 +31,7 @@ namespace Discord.Rpc
{
base.Update(model);
if (model.UserLimit.IsSpecified)
- UserLimit = model.UserLimit.Value;
+ UserLimit = model.UserLimit.Value != 0 ? model.UserLimit.Value : (int?)null;
if (model.Bitrate.IsSpecified)
Bitrate = model.Bitrate.Value;
VoiceStates = model.VoiceStates.Select(x => RpcVoiceState.Create(Discord, x)).ToImmutableArray();
diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketVoiceChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketVoiceChannel.cs
index 072ccc787..71017a7c8 100644
--- a/src/Discord.Net.WebSocket/Entities/Channels/SocketVoiceChannel.cs
+++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketVoiceChannel.cs
@@ -1,5 +1,4 @@
-using Discord.API.Rest;
-using Discord.Audio;
+using Discord.Audio;
using Discord.Rest;
using System;
using System.Collections.Generic;
@@ -15,7 +14,7 @@ namespace Discord.WebSocket
public class SocketVoiceChannel : SocketGuildChannel, IVoiceChannel, ISocketAudioChannel
{
public int Bitrate { get; private set; }
- public int UserLimit { get; private set; }
+ public int? UserLimit { get; private set; }
public override IReadOnlyCollection Users
=> Guild.Users.Where(x => x.VoiceChannel?.Id == Id).ToImmutableArray();
@@ -35,7 +34,7 @@ namespace Discord.WebSocket
base.Update(state, model);
Bitrate = model.Bitrate.Value;
- UserLimit = model.UserLimit.Value;
+ UserLimit = model.UserLimit.Value != 0 ? model.UserLimit.Value : (int?)null;
}
public Task ModifyAsync(Action func, RequestOptions options = null)