Browse Source

feature: Add SelfStream voice state property (#1369)

* Add self_stream voice state property

Adds the self_stream property which is set true when a user is streaming a video to a voice channel

* use flags for selfstream state instead of its own prop
tags/2.2.0
Chris Johnston Christopher F 5 years ago
parent
commit
9bb08c9ba4
9 changed files with 29 additions and 3 deletions
  1. +7
    -0
      src/Discord.Net.Core/Entities/Users/IVoiceState.cs
  2. +2
    -0
      src/Discord.Net.Rest/API/Common/VoiceState.cs
  3. +2
    -0
      src/Discord.Net.Rest/Entities/Users/RestGroupUser.cs
  4. +2
    -0
      src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs
  5. +2
    -0
      src/Discord.Net.Rest/Entities/Users/RestWebhookUser.cs
  6. +2
    -0
      src/Discord.Net.WebSocket/Entities/Users/SocketGroupUser.cs
  7. +2
    -0
      src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs
  8. +8
    -3
      src/Discord.Net.WebSocket/Entities/Users/SocketVoiceState.cs
  9. +2
    -0
      src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs

+ 7
- 0
src/Discord.Net.Core/Entities/Users/IVoiceState.cs View File

@@ -55,5 +55,12 @@ namespace Discord
/// Gets the unique identifier for this user's voice session.
/// </summary>
string VoiceSessionId { get; }
/// <summary>
/// Gets a value that indicates if this user is streaming in a voice channel.
/// </summary>
/// <returns>
/// <c>true</c> if the user is streaming; otherwise <c>false</c>.
/// </returns>
bool IsStream { get; }
}
}

+ 2
- 0
src/Discord.Net.Rest/API/Common/VoiceState.cs View File

@@ -26,5 +26,7 @@ namespace Discord.API
public bool SelfMute { get; set; }
[JsonProperty("suppress")]
public bool Suppress { get; set; }
[JsonProperty("self_stream")]
public bool SelfStream { get; set; }
}
}

+ 2
- 0
src/Discord.Net.Rest/Entities/Users/RestGroupUser.cs View File

@@ -35,5 +35,7 @@ namespace Discord.Rest
IVoiceChannel IVoiceState.VoiceChannel => null;
/// <inheritdoc />
string IVoiceState.VoiceSessionId => null;
/// <inheritdoc />
bool IVoiceState.IsStream => false;
}
}

+ 2
- 0
src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs View File

@@ -151,5 +151,7 @@ namespace Discord.Rest
IVoiceChannel IVoiceState.VoiceChannel => null;
/// <inheritdoc />
string IVoiceState.VoiceSessionId => null;
/// <inheritdoc />
bool IVoiceState.IsStream => false;
}
}

+ 2
- 0
src/Discord.Net.Rest/Entities/Users/RestWebhookUser.cs View File

@@ -95,5 +95,7 @@ namespace Discord.Rest
IVoiceChannel IVoiceState.VoiceChannel => null;
/// <inheritdoc />
string IVoiceState.VoiceSessionId => null;
/// <inheritdoc />
bool IVoiceState.IsStream => false;
}
}

+ 2
- 0
src/Discord.Net.WebSocket/Entities/Users/SocketGroupUser.cs View File

@@ -61,5 +61,7 @@ namespace Discord.WebSocket
IVoiceChannel IVoiceState.VoiceChannel => null;
/// <inheritdoc />
string IVoiceState.VoiceSessionId => null;
/// <inheritdoc />
bool IVoiceState.IsStream => false;
}
}

+ 2
- 0
src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs View File

@@ -55,6 +55,8 @@ namespace Discord.WebSocket
/// <inheritdoc />
public bool IsMuted => VoiceState?.IsMuted ?? false;
/// <inheritdoc />
public bool IsStream => VoiceState?.IsStream ?? false;
/// <inheritdoc />
public DateTimeOffset? JoinedAt => DateTimeUtils.FromTicks(_joinedAtTicks);
/// <summary>
/// Returns a collection of roles that the user possesses.


+ 8
- 3
src/Discord.Net.WebSocket/Entities/Users/SocketVoiceState.cs View File

@@ -13,7 +13,7 @@ namespace Discord.WebSocket
/// <summary>
/// Initializes a default <see cref="SocketVoiceState"/> with everything set to <c>null</c> or <c>false</c>.
/// </summary>
public static readonly SocketVoiceState Default = new SocketVoiceState(null, null, false, false, false, false, false);
public static readonly SocketVoiceState Default = new SocketVoiceState(null, null, false, false, false, false, false, false);

[Flags]
private enum Flags : byte
@@ -24,6 +24,7 @@ namespace Discord.WebSocket
Deafened = 0x04,
SelfMuted = 0x08,
SelfDeafened = 0x10,
SelfStream = 0x20,
}

private readonly Flags _voiceStates;
@@ -45,8 +46,10 @@ namespace Discord.WebSocket
public bool IsSelfMuted => (_voiceStates & Flags.SelfMuted) != 0;
/// <inheritdoc />
public bool IsSelfDeafened => (_voiceStates & Flags.SelfDeafened) != 0;
/// <inheritdoc />
public bool IsStream => (_voiceStates & Flags.SelfStream) != 0;

internal SocketVoiceState(SocketVoiceChannel voiceChannel, string sessionId, bool isSelfMuted, bool isSelfDeafened, bool isMuted, bool isDeafened, bool isSuppressed)
internal SocketVoiceState(SocketVoiceChannel voiceChannel, string sessionId, bool isSelfMuted, bool isSelfDeafened, bool isMuted, bool isDeafened, bool isSuppressed, bool isStream)
{
VoiceChannel = voiceChannel;
VoiceSessionId = sessionId;
@@ -62,11 +65,13 @@ namespace Discord.WebSocket
voiceStates |= Flags.Deafened;
if (isSuppressed)
voiceStates |= Flags.Suppressed;
if (isStream)
voiceStates |= Flags.SelfStream;
_voiceStates = voiceStates;
}
internal static SocketVoiceState Create(SocketVoiceChannel voiceChannel, Model model)
{
return new SocketVoiceState(voiceChannel, model.SessionId, model.SelfMute, model.SelfDeaf, model.Mute, model.Deaf, model.Suppress);
return new SocketVoiceState(voiceChannel, model.SessionId, model.SelfMute, model.SelfDeaf, model.Mute, model.Deaf, model.Suppress, model.SelfStream);
}

/// <summary>


+ 2
- 0
src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs View File

@@ -114,5 +114,7 @@ namespace Discord.WebSocket
IVoiceChannel IVoiceState.VoiceChannel => null;
/// <inheritdoc />
string IVoiceState.VoiceSessionId => null;
/// <inheritdoc />
bool IVoiceState.IsStream => false;
}
}

Loading…
Cancel
Save