From 8bcd3da9e4ee025b3f5dfd6cdb171587ca63d79a Mon Sep 17 00:00:00 2001 From: EpicOfficer <9379778+EpicOfficer@users.noreply.github.com> Date: Wed, 2 Mar 2022 20:27:29 +0000 Subject: [PATCH] Add self_video to VoiceState (#2137) * Add self_video to VoiceState * Update selfVideo flag --- src/Discord.Net.Core/Entities/Users/IVoiceState.cs | 7 +++++++ src/Discord.Net.Rest/API/Common/VoiceState.cs | 2 ++ src/Discord.Net.Rest/Entities/Users/RestGroupUser.cs | 2 ++ src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs | 2 ++ .../Entities/Users/RestWebhookUser.cs | 2 ++ .../Entities/Users/SocketGroupUser.cs | 2 ++ .../Entities/Users/SocketGuildUser.cs | 2 ++ .../Entities/Users/SocketThreadUser.cs | 4 ++++ .../Entities/Users/SocketVoiceState.cs | 11 ++++++++--- .../Entities/Users/SocketWebhookUser.cs | 2 ++ 10 files changed, 33 insertions(+), 3 deletions(-) diff --git a/src/Discord.Net.Core/Entities/Users/IVoiceState.cs b/src/Discord.Net.Core/Entities/Users/IVoiceState.cs index c9a22761f..f346fc914 100644 --- a/src/Discord.Net.Core/Entities/Users/IVoiceState.cs +++ b/src/Discord.Net.Core/Entities/Users/IVoiceState.cs @@ -65,6 +65,13 @@ namespace Discord /// bool IsStreaming { get; } /// + /// Gets a value that indicates if the user is videoing in a voice channel. + /// + /// + /// true if the user has their camera turned on; otherwise false. + /// + bool IsVideoing { get; } + /// /// Gets the time on which the user requested to speak. /// DateTimeOffset? RequestToSpeakTimestamp { get; } diff --git a/src/Discord.Net.Rest/API/Common/VoiceState.cs b/src/Discord.Net.Rest/API/Common/VoiceState.cs index f7cd54a72..adfa7f20e 100644 --- a/src/Discord.Net.Rest/API/Common/VoiceState.cs +++ b/src/Discord.Net.Rest/API/Common/VoiceState.cs @@ -28,6 +28,8 @@ namespace Discord.API public bool Suppress { get; set; } [JsonProperty("self_stream")] public bool SelfStream { get; set; } + [JsonProperty("self_video")] + public bool SelfVideo { get; set; } [JsonProperty("request_to_speak_timestamp")] public Optional RequestToSpeakTimestamp { get; set; } } diff --git a/src/Discord.Net.Rest/Entities/Users/RestGroupUser.cs b/src/Discord.Net.Rest/Entities/Users/RestGroupUser.cs index 40e45b135..a8c1a9b0a 100644 --- a/src/Discord.Net.Rest/Entities/Users/RestGroupUser.cs +++ b/src/Discord.Net.Rest/Entities/Users/RestGroupUser.cs @@ -41,6 +41,8 @@ namespace Discord.Rest /// bool IVoiceState.IsStreaming => false; /// + bool IVoiceState.IsVideoing => false; + /// DateTimeOffset? IVoiceState.RequestToSpeakTimestamp => null; #endregion } diff --git a/src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs b/src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs index d6c7b5d7c..0a4a33099 100644 --- a/src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs +++ b/src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs @@ -223,6 +223,8 @@ namespace Discord.Rest /// bool IVoiceState.IsStreaming => false; /// + bool IVoiceState.IsVideoing => false; + /// DateTimeOffset? IVoiceState.RequestToSpeakTimestamp => null; #endregion } diff --git a/src/Discord.Net.Rest/Entities/Users/RestWebhookUser.cs b/src/Discord.Net.Rest/Entities/Users/RestWebhookUser.cs index d03800676..3fa88649a 100644 --- a/src/Discord.Net.Rest/Entities/Users/RestWebhookUser.cs +++ b/src/Discord.Net.Rest/Entities/Users/RestWebhookUser.cs @@ -131,6 +131,8 @@ namespace Discord.Rest /// bool IVoiceState.IsStreaming => false; /// + bool IVoiceState.IsVideoing => false; + /// DateTimeOffset? IVoiceState.RequestToSpeakTimestamp => null; #endregion } diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketGroupUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketGroupUser.cs index d027bf0aa..a40ae59be 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketGroupUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketGroupUser.cs @@ -70,6 +70,8 @@ namespace Discord.WebSocket /// bool IVoiceState.IsStreaming => false; /// + bool IVoiceState.IsVideoing => false; + /// DateTimeOffset? IVoiceState.RequestToSpeakTimestamp => null; #endregion } diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs index ac3a53f17..051687b78 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs @@ -65,6 +65,8 @@ namespace Discord.WebSocket /// public bool IsStreaming => VoiceState?.IsStreaming ?? false; /// + public bool IsVideoing => VoiceState?.IsVideoing ?? false; + /// public DateTimeOffset? RequestToSpeakTimestamp => VoiceState?.RequestToSpeakTimestamp ?? null; /// public bool? IsPending { get; private set; } diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketThreadUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketThreadUser.cs index 08a1cbab4..025d34d0f 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketThreadUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketThreadUser.cs @@ -122,6 +122,10 @@ namespace Discord.WebSocket public bool IsStreaming => GuildUser.IsStreaming; + /// + public bool IsVideoing + => GuildUser.IsVideoing; + /// public DateTimeOffset? RequestToSpeakTimestamp => GuildUser.RequestToSpeakTimestamp; diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketVoiceState.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketVoiceState.cs index 816a839fc..6c5b867b5 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketVoiceState.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketVoiceState.cs @@ -13,7 +13,7 @@ namespace Discord.WebSocket /// /// Initializes a default with everything set to null or false. /// - public static readonly SocketVoiceState Default = new SocketVoiceState(null, null, null, false, false, false, false, false, false); + public static readonly SocketVoiceState Default = new SocketVoiceState(null, null, null, false, false, false, false, false, false, false); [Flags] private enum Flags : byte @@ -25,6 +25,7 @@ namespace Discord.WebSocket SelfMuted = 0x08, SelfDeafened = 0x10, SelfStream = 0x20, + SelfVideo = 0x40, } private readonly Flags _voiceStates; @@ -50,9 +51,11 @@ namespace Discord.WebSocket public bool IsSelfDeafened => (_voiceStates & Flags.SelfDeafened) != 0; /// public bool IsStreaming => (_voiceStates & Flags.SelfStream) != 0; + /// + public bool IsVideoing => (_voiceStates & Flags.SelfVideo) != 0; - internal SocketVoiceState(SocketVoiceChannel voiceChannel, DateTimeOffset? requestToSpeak, string sessionId, bool isSelfMuted, bool isSelfDeafened, bool isMuted, bool isDeafened, bool isSuppressed, bool isStream) + internal SocketVoiceState(SocketVoiceChannel voiceChannel, DateTimeOffset? requestToSpeak, string sessionId, bool isSelfMuted, bool isSelfDeafened, bool isMuted, bool isDeafened, bool isSuppressed, bool isStream, bool isVideo) { VoiceChannel = voiceChannel; VoiceSessionId = sessionId; @@ -71,11 +74,13 @@ namespace Discord.WebSocket voiceStates |= Flags.Suppressed; if (isStream) voiceStates |= Flags.SelfStream; + if (isVideo) + voiceStates |= Flags.SelfVideo; _voiceStates = voiceStates; } internal static SocketVoiceState Create(SocketVoiceChannel voiceChannel, Model model) { - return new SocketVoiceState(voiceChannel, model.RequestToSpeakTimestamp.IsSpecified ? model.RequestToSpeakTimestamp.Value : null, model.SessionId, model.SelfMute, model.SelfDeaf, model.Mute, model.Deaf, model.Suppress, model.SelfStream); + return new SocketVoiceState(voiceChannel, model.RequestToSpeakTimestamp.IsSpecified ? model.RequestToSpeakTimestamp.Value : null, model.SessionId, model.SelfMute, model.SelfDeaf, model.Mute, model.Deaf, model.Suppress, model.SelfStream, model.SelfVideo); } /// diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs index df5fe786d..2b2c259c5 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs @@ -164,6 +164,8 @@ namespace Discord.WebSocket /// bool IVoiceState.IsStreaming => false; /// + bool IVoiceState.IsVideoing => false; + /// DateTimeOffset? IVoiceState.RequestToSpeakTimestamp => null; #endregion }