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
This commit is contained in:
committed by
Christopher F
parent
b0a595be77
commit
9bb08c9ba4
@@ -55,5 +55,12 @@ namespace Discord
|
|||||||
/// Gets the unique identifier for this user's voice session.
|
/// Gets the unique identifier for this user's voice session.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
string VoiceSessionId { get; }
|
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; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,5 +26,7 @@ namespace Discord.API
|
|||||||
public bool SelfMute { get; set; }
|
public bool SelfMute { get; set; }
|
||||||
[JsonProperty("suppress")]
|
[JsonProperty("suppress")]
|
||||||
public bool Suppress { get; set; }
|
public bool Suppress { get; set; }
|
||||||
|
[JsonProperty("self_stream")]
|
||||||
|
public bool SelfStream { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,5 +35,7 @@ namespace Discord.Rest
|
|||||||
IVoiceChannel IVoiceState.VoiceChannel => null;
|
IVoiceChannel IVoiceState.VoiceChannel => null;
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
string IVoiceState.VoiceSessionId => null;
|
string IVoiceState.VoiceSessionId => null;
|
||||||
|
/// <inheritdoc />
|
||||||
|
bool IVoiceState.IsStream => false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -151,5 +151,7 @@ namespace Discord.Rest
|
|||||||
IVoiceChannel IVoiceState.VoiceChannel => null;
|
IVoiceChannel IVoiceState.VoiceChannel => null;
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
string IVoiceState.VoiceSessionId => null;
|
string IVoiceState.VoiceSessionId => null;
|
||||||
|
/// <inheritdoc />
|
||||||
|
bool IVoiceState.IsStream => false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -95,5 +95,7 @@ namespace Discord.Rest
|
|||||||
IVoiceChannel IVoiceState.VoiceChannel => null;
|
IVoiceChannel IVoiceState.VoiceChannel => null;
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
string IVoiceState.VoiceSessionId => null;
|
string IVoiceState.VoiceSessionId => null;
|
||||||
|
/// <inheritdoc />
|
||||||
|
bool IVoiceState.IsStream => false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -61,5 +61,7 @@ namespace Discord.WebSocket
|
|||||||
IVoiceChannel IVoiceState.VoiceChannel => null;
|
IVoiceChannel IVoiceState.VoiceChannel => null;
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
string IVoiceState.VoiceSessionId => null;
|
string IVoiceState.VoiceSessionId => null;
|
||||||
|
/// <inheritdoc />
|
||||||
|
bool IVoiceState.IsStream => false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,6 +55,8 @@ namespace Discord.WebSocket
|
|||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public bool IsMuted => VoiceState?.IsMuted ?? false;
|
public bool IsMuted => VoiceState?.IsMuted ?? false;
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
|
public bool IsStream => VoiceState?.IsStream ?? false;
|
||||||
|
/// <inheritdoc />
|
||||||
public DateTimeOffset? JoinedAt => DateTimeUtils.FromTicks(_joinedAtTicks);
|
public DateTimeOffset? JoinedAt => DateTimeUtils.FromTicks(_joinedAtTicks);
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a collection of roles that the user possesses.
|
/// Returns a collection of roles that the user possesses.
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ namespace Discord.WebSocket
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a default <see cref="SocketVoiceState"/> with everything set to <c>null</c> or <c>false</c>.
|
/// Initializes a default <see cref="SocketVoiceState"/> with everything set to <c>null</c> or <c>false</c>.
|
||||||
/// </summary>
|
/// </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]
|
[Flags]
|
||||||
private enum Flags : byte
|
private enum Flags : byte
|
||||||
@@ -24,6 +24,7 @@ namespace Discord.WebSocket
|
|||||||
Deafened = 0x04,
|
Deafened = 0x04,
|
||||||
SelfMuted = 0x08,
|
SelfMuted = 0x08,
|
||||||
SelfDeafened = 0x10,
|
SelfDeafened = 0x10,
|
||||||
|
SelfStream = 0x20,
|
||||||
}
|
}
|
||||||
|
|
||||||
private readonly Flags _voiceStates;
|
private readonly Flags _voiceStates;
|
||||||
@@ -45,8 +46,10 @@ namespace Discord.WebSocket
|
|||||||
public bool IsSelfMuted => (_voiceStates & Flags.SelfMuted) != 0;
|
public bool IsSelfMuted => (_voiceStates & Flags.SelfMuted) != 0;
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public bool IsSelfDeafened => (_voiceStates & Flags.SelfDeafened) != 0;
|
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;
|
VoiceChannel = voiceChannel;
|
||||||
VoiceSessionId = sessionId;
|
VoiceSessionId = sessionId;
|
||||||
@@ -62,11 +65,13 @@ namespace Discord.WebSocket
|
|||||||
voiceStates |= Flags.Deafened;
|
voiceStates |= Flags.Deafened;
|
||||||
if (isSuppressed)
|
if (isSuppressed)
|
||||||
voiceStates |= Flags.Suppressed;
|
voiceStates |= Flags.Suppressed;
|
||||||
|
if (isStream)
|
||||||
|
voiceStates |= Flags.SelfStream;
|
||||||
_voiceStates = voiceStates;
|
_voiceStates = voiceStates;
|
||||||
}
|
}
|
||||||
internal static SocketVoiceState Create(SocketVoiceChannel voiceChannel, Model model)
|
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>
|
/// <summary>
|
||||||
|
|||||||
@@ -114,5 +114,7 @@ namespace Discord.WebSocket
|
|||||||
IVoiceChannel IVoiceState.VoiceChannel => null;
|
IVoiceChannel IVoiceState.VoiceChannel => null;
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
string IVoiceState.VoiceSessionId => null;
|
string IVoiceState.VoiceSessionId => null;
|
||||||
|
/// <inheritdoc />
|
||||||
|
bool IVoiceState.IsStream => false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user