Browse Source

[Feature] Add missing VoiceChannel properties (#2573)

* add missing properties

* forgot about `MockedVoiceChannel`
pull/2585/head
Misha133 GitHub 2 years ago
parent
commit
1e21a6ed4a
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 45 additions and 0 deletions
  1. +5
    -0
      src/Discord.Net.Core/Entities/Channels/IVoiceChannel.cs
  2. +17
    -0
      src/Discord.Net.Core/Entities/Channels/VideoQualityMode.cs
  3. +5
    -0
      src/Discord.Net.Core/Entities/Channels/VoiceChannelProperties.cs
  4. +3
    -0
      src/Discord.Net.Rest/API/Common/Channel.cs
  5. +4
    -0
      src/Discord.Net.Rest/API/Rest/CreateGuildChannelParams.cs
  6. +4
    -0
      src/Discord.Net.Rest/Entities/Channels/RestVoiceChannel.cs
  7. +2
    -0
      src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs
  8. +3
    -0
      src/Discord.Net.WebSocket/Entities/Channels/SocketVoiceChannel.cs
  9. +2
    -0
      test/Discord.Net.Tests.Unit/MockedEntities/MockedVoiceChannel.cs

+ 5
- 0
src/Discord.Net.Core/Entities/Channels/IVoiceChannel.cs View File

@@ -26,6 +26,11 @@ namespace Discord
/// </returns> /// </returns>
int? UserLimit { get; } int? UserLimit { get; }


/// <summary>
/// Gets the video quality mode for this channel.
/// </summary>
VideoQualityMode VideoQualityMode { get; }

/// <summary> /// <summary>
/// Bulk-deletes multiple messages. /// Bulk-deletes multiple messages.
/// </summary> /// </summary>


+ 17
- 0
src/Discord.Net.Core/Entities/Channels/VideoQualityMode.cs View File

@@ -0,0 +1,17 @@
namespace Discord;

/// <summary>
/// Represents a video quality mode for voice channels.
/// </summary>
public enum VideoQualityMode
{
/// <summary>
/// Discord chooses the quality for optimal performance.
/// </summary>
Auto = 1,

/// <summary>
/// 720p.
/// </summary>
Full = 2
}

+ 5
- 0
src/Discord.Net.Core/Entities/Channels/VoiceChannelProperties.cs View File

@@ -17,5 +17,10 @@ namespace Discord
/// Gets or sets the channel voice region id, automatic when set to <see langword="null"/>. /// Gets or sets the channel voice region id, automatic when set to <see langword="null"/>.
/// </summary> /// </summary>
public Optional<string> RTCRegion { get; set; } public Optional<string> RTCRegion { get; set; }

/// <summary>
/// Get or sets the video quality mode for this channel.
/// </summary>
public Optional<VideoQualityMode> VideoQualityMode { get; set; }
} }
} }

+ 3
- 0
src/Discord.Net.Rest/API/Common/Channel.cs View File

@@ -43,6 +43,9 @@ namespace Discord.API
[JsonProperty("rtc_region")] [JsonProperty("rtc_region")]
public Optional<string> RTCRegion { get; set; } public Optional<string> RTCRegion { get; set; }


[JsonProperty("video_quality_mode")]
public Optional<VideoQualityMode> VideoQualityMode { get; set; }

//PrivateChannel //PrivateChannel
[JsonProperty("recipients")] [JsonProperty("recipients")]
public Optional<User[]> Recipients { get; set; } public Optional<User[]> Recipients { get; set; }


+ 4
- 0
src/Discord.Net.Rest/API/Rest/CreateGuildChannelParams.cs View File

@@ -31,6 +31,10 @@ namespace Discord.API.Rest
public Optional<int> Bitrate { get; set; } public Optional<int> Bitrate { get; set; }
[JsonProperty("user_limit")] [JsonProperty("user_limit")]
public Optional<int?> UserLimit { get; set; } public Optional<int?> UserLimit { get; set; }
[JsonProperty("video_quality_mode")]
public Optional<VideoQualityMode> VideoQuality { get; set; }
[JsonProperty("rtc_region")]
public Optional<string> RtcRegion { get; set; }


//Forum channels //Forum channels
[JsonProperty("default_reaction_emoji")] [JsonProperty("default_reaction_emoji")]


+ 4
- 0
src/Discord.Net.Rest/Entities/Channels/RestVoiceChannel.cs View File

@@ -26,6 +26,8 @@ namespace Discord.Rest
public int? UserLimit { get; private set; } public int? UserLimit { get; private set; }
/// <inheritdoc/> /// <inheritdoc/>
public string RTCRegion { get; private set; } public string RTCRegion { get; private set; }
/// <inheritdoc/>
public VideoQualityMode VideoQualityMode { get; private set; }


internal RestVoiceChannel(BaseDiscordClient discord, IGuild guild, ulong id) internal RestVoiceChannel(BaseDiscordClient discord, IGuild guild, ulong id)
: base(discord, guild, id) : base(discord, guild, id)
@@ -48,6 +50,8 @@ namespace Discord.Rest
if(model.UserLimit.IsSpecified) if(model.UserLimit.IsSpecified)
UserLimit = model.UserLimit.Value != 0 ? model.UserLimit.Value : (int?)null; UserLimit = model.UserLimit.Value != 0 ? model.UserLimit.Value : (int?)null;


VideoQualityMode = model.VideoQualityMode.GetValueOrDefault(VideoQualityMode.Auto);

RTCRegion = model.RTCRegion.GetValueOrDefault(null); RTCRegion = model.RTCRegion.GetValueOrDefault(null);
} }




+ 2
- 0
src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs View File

@@ -285,6 +285,8 @@ namespace Discord.Rest
Deny = overwrite.Permissions.DenyValue.ToString() Deny = overwrite.Permissions.DenyValue.ToString()
}).ToArray() }).ToArray()
: Optional.Create<API.Overwrite[]>(), : Optional.Create<API.Overwrite[]>(),
VideoQuality = props.VideoQualityMode,
RtcRegion = props.RTCRegion
}; };
var model = await client.ApiClient.CreateGuildChannelAsync(guild.Id, args, options).ConfigureAwait(false); var model = await client.ApiClient.CreateGuildChannelAsync(guild.Id, args, options).ConfigureAwait(false);
return RestVoiceChannel.Create(client, guild, model); return RestVoiceChannel.Create(client, guild, model);


+ 3
- 0
src/Discord.Net.WebSocket/Entities/Channels/SocketVoiceChannel.cs View File

@@ -34,6 +34,8 @@ namespace Discord.WebSocket
public int? UserLimit { get; private set; } public int? UserLimit { get; private set; }
/// <inheritdoc /> /// <inheritdoc />
public string RTCRegion { get; private set; } public string RTCRegion { get; private set; }
/// <inheritdoc/>
public VideoQualityMode VideoQualityMode { get; private set; }


/// <summary> /// <summary>
/// Gets a collection of users that are currently connected to this voice channel. /// Gets a collection of users that are currently connected to this voice channel.
@@ -60,6 +62,7 @@ namespace Discord.WebSocket
base.Update(state, model); base.Update(state, model);
Bitrate = model.Bitrate.GetValueOrDefault(64000); Bitrate = model.Bitrate.GetValueOrDefault(64000);
UserLimit = model.UserLimit.GetValueOrDefault() != 0 ? model.UserLimit.Value : (int?)null; UserLimit = model.UserLimit.GetValueOrDefault() != 0 ? model.UserLimit.Value : (int?)null;
VideoQualityMode = model.VideoQualityMode.GetValueOrDefault(VideoQualityMode.Auto);
RTCRegion = model.RTCRegion.GetValueOrDefault(null); RTCRegion = model.RTCRegion.GetValueOrDefault(null);
} }




+ 2
- 0
test/Discord.Net.Tests.Unit/MockedEntities/MockedVoiceChannel.cs View File

@@ -38,6 +38,8 @@ namespace Discord


public ChannelFlags Flags => throw new NotImplementedException(); public ChannelFlags Flags => throw new NotImplementedException();


public VideoQualityMode VideoQualityMode => throw new NotImplementedException();

public Task AddPermissionOverwriteAsync(IRole role, OverwritePermissions permissions, RequestOptions options = null) => throw new NotImplementedException(); public Task AddPermissionOverwriteAsync(IRole role, OverwritePermissions permissions, RequestOptions options = null) => throw new NotImplementedException();
public Task AddPermissionOverwriteAsync(IUser user, OverwritePermissions permissions, RequestOptions options = null) => throw new NotImplementedException(); public Task AddPermissionOverwriteAsync(IUser user, OverwritePermissions permissions, RequestOptions options = null) => throw new NotImplementedException();
public Task<IAudioClient> ConnectAsync(bool selfDeaf = false, bool selfMute = false, bool external = false) => throw new NotImplementedException(); public Task<IAudioClient> ConnectAsync(bool selfDeaf = false, bool selfMute = false, bool external = false) => throw new NotImplementedException();


Loading…
Cancel
Save