diff --git a/index.d.ts b/index.d.ts index d9db1bc08..e462d62d3 100644 --- a/index.d.ts +++ b/index.d.ts @@ -100,6 +100,7 @@ declare namespace Eris { deaf: boolean; selfMute: boolean; selfDeaf: boolean; + selfStream: boolean; } interface OAuthApplicationInfo { @@ -1634,6 +1635,7 @@ declare namespace Eris { suppress: boolean; selfMute: boolean; selfDeaf: boolean; + selfStream: boolean; constructor(data: BaseData); toJSON(arg?: any, cache?: (string | any)[]): JSONCache; } diff --git a/lib/gateway/Shard.js b/lib/gateway/Shard.js index bef56364d..67670dc63 100644 --- a/lib/gateway/Shard.js +++ b/lib/gateway/Shard.js @@ -338,7 +338,8 @@ class Shard extends EventEmitter { mute: member.voiceState.mute, deaf: member.voiceState.deaf, selfMute: member.voiceState.selfMute, - selfDeaf: member.voiceState.selfDeaf + selfDeaf: member.voiceState.selfDeaf, + selfStream: member.voiceState.selfStream }; const oldChannelID = member.voiceState.channelID; member.update(packet.d, this.client); @@ -383,7 +384,7 @@ class Shard extends EventEmitter { this.emit("voiceChannelLeave", oldChannel.voiceMembers.remove(member), oldChannel); } } - if(oldState.mute !== member.mute || oldState.deaf !== member.deaf || oldState.selfMute !== member.selfMute || oldState.selfDeaf !== member.selfDeaf) { + if(oldState.mute !== member.mute || oldState.deaf !== member.deaf || oldState.selfMute !== member.selfMute || oldState.selfDeaf !== member.selfDeaf || oldState.selfStream !== member.selfStream) { /** * Fired when a guild member's voice state changes * @event Client#voiceStateUpdate @@ -393,6 +394,7 @@ class Shard extends EventEmitter { * @prop {Boolean} oldState.deaf The previous server deaf status * @prop {Boolean} oldState.selfMute The previous self mute status * @prop {Boolean} oldState.selfDeaf The previous self deaf status + * @prop {Boolean} oldState.selfStream The previous self stream status */ this.emit("voiceStateUpdate", member, oldState); } diff --git a/lib/structures/VoiceState.js b/lib/structures/VoiceState.js index b73bfb76f..db33cfe01 100644 --- a/lib/structures/VoiceState.js +++ b/lib/structures/VoiceState.js @@ -12,6 +12,7 @@ const Base = require("./Base"); * @prop {Boolean} suppress Whether the member is suppressed or not * @prop {Boolean} selfMute Whether the member is self muted or not * @prop {Boolean} selfDeaf Whether the member is self deafened or not +* @prop {Boolean} selfStream Whether the member is streaming using "Go Live" */ class VoiceState extends Base { constructor(data) { @@ -31,6 +32,7 @@ class VoiceState extends Base { this.suppress = data.suppress !== undefined ? data.suppress : this.suppress || false; // Bots ignore this this.selfMute = data.self_mute !== undefined ? data.self_mute : this.selfMute || false; this.selfDeaf = data.self_deaf !== undefined ? data.self_deaf : this.selfDeaf || false; + this.selfStream = data.self_stream || false; } toJSON(props = []) { @@ -40,6 +42,7 @@ class VoiceState extends Base { "mute", "selfMute", "selfDeaf", + "selfStream", "sessionID", "suppress", ...props