| @@ -1978,6 +1978,53 @@ | |||||
| A task that represents the asynchronous stop operation. | A task that represents the asynchronous stop operation. | ||||
| </returns> | </returns> | ||||
| </member> | </member> | ||||
| <member name="M:Discord.IStageChannel.RequestToSpeak(Discord.RequestOptions)"> | |||||
| <summary> | |||||
| Indicates that the bot would like to speak within a stage channel. | |||||
| </summary> | |||||
| <param name="options">The options to be used when sending the request.</param> | |||||
| <returns> | |||||
| A task that represents the asynchronous request to speak operation. | |||||
| </returns> | |||||
| </member> | |||||
| <member name="M:Discord.IStageChannel.BecomeSpeakerAsync(Discord.RequestOptions)"> | |||||
| <summary> | |||||
| Makes the current user become a speaker within a stage. | |||||
| </summary> | |||||
| <param name="options">The options to be used when sending the request.</param> | |||||
| <returns> | |||||
| A task that represents the asynchronous speaker modify operation. | |||||
| </returns> | |||||
| </member> | |||||
| <member name="M:Discord.IStageChannel.StopSpeakingAsync(Discord.RequestOptions)"> | |||||
| <summary> | |||||
| Makes the current user a listener. | |||||
| </summary> | |||||
| <param name="options">The options to be used when sending the request.</param> | |||||
| <returns> | |||||
| A task that represents the asynchronous stop operation. | |||||
| </returns> | |||||
| </member> | |||||
| <member name="M:Discord.IStageChannel.MoveToSpeaker(Discord.IGuildUser,Discord.RequestOptions)"> | |||||
| <summary> | |||||
| Makes a user a speaker within a stage. | |||||
| </summary> | |||||
| <param name="user">The user to make the speaker.</param> | |||||
| <param name="options">The options to be used when sending the request.</param> | |||||
| <returns> | |||||
| A task that represents the asynchronous move operation. | |||||
| </returns> | |||||
| </member> | |||||
| <member name="M:Discord.IStageChannel.RemoveFromSpeaker(Discord.IGuildUser,Discord.RequestOptions)"> | |||||
| <summary> | |||||
| Removes a user from speaking. | |||||
| </summary> | |||||
| <param name="user">The user to remove from speaking.</param> | |||||
| <param name="options">The options to be used when sending the request.</param> | |||||
| <returns> | |||||
| A task that represents the asynchronous remove operation. | |||||
| </returns> | |||||
| </member> | |||||
| <member name="T:Discord.ITextChannel"> | <member name="T:Discord.ITextChannel"> | ||||
| <summary> | <summary> | ||||
| Represents a generic channel in a guild that can send and receive messages. | Represents a generic channel in a guild that can send and receive messages. | ||||
| @@ -7550,6 +7597,14 @@ | |||||
| This must be less than the constant defined by <see cref="F:Discord.DiscordConfig.MaxMessageSize"/>. | This must be less than the constant defined by <see cref="F:Discord.DiscordConfig.MaxMessageSize"/>. | ||||
| </remarks> | </remarks> | ||||
| </member> | </member> | ||||
| <member name="P:Discord.MessageProperties.Embed"> | |||||
| <summary> | |||||
| Gets or sets a single embed for this message. | |||||
| </summary> | |||||
| <remarks> | |||||
| This property will be added to the <see cref="P:Discord.MessageProperties.Embed"/> array, in the future please use the array rather then this property. | |||||
| </remarks> | |||||
| </member> | |||||
| <member name="P:Discord.MessageProperties.Embeds"> | <member name="P:Discord.MessageProperties.Embeds"> | ||||
| <summary> | <summary> | ||||
| Gets or sets the embeds of the message. | Gets or sets the embeds of the message. | ||||
| @@ -2313,6 +2313,18 @@ | |||||
| <member name="M:Discord.Rest.RestStageChannel.RequestToSpeak(Discord.RequestOptions)"> | <member name="M:Discord.Rest.RestStageChannel.RequestToSpeak(Discord.RequestOptions)"> | ||||
| <inheritdoc/> | <inheritdoc/> | ||||
| </member> | </member> | ||||
| <member name="M:Discord.Rest.RestStageChannel.BecomeSpeakerAsync(Discord.RequestOptions)"> | |||||
| <inheritdoc/> | |||||
| </member> | |||||
| <member name="M:Discord.Rest.RestStageChannel.StopSpeakingAsync(Discord.RequestOptions)"> | |||||
| <inheritdoc/> | |||||
| </member> | |||||
| <member name="M:Discord.Rest.RestStageChannel.MoveToSpeaker(Discord.IGuildUser,Discord.RequestOptions)"> | |||||
| <inheritdoc/> | |||||
| </member> | |||||
| <member name="M:Discord.Rest.RestStageChannel.RemoveFromSpeaker(Discord.IGuildUser,Discord.RequestOptions)"> | |||||
| <inheritdoc/> | |||||
| </member> | |||||
| <member name="T:Discord.Rest.RestTextChannel"> | <member name="T:Discord.Rest.RestTextChannel"> | ||||
| <summary> | <summary> | ||||
| Represents a REST-based channel in a guild that can send and receive messages. | Represents a REST-based channel in a guild that can send and receive messages. | ||||
| @@ -1,4 +1,4 @@ | |||||
| <Project Sdk="Microsoft.NET.Sdk"> | |||||
| <Project Sdk="Microsoft.NET.Sdk"> | |||||
| <Import Project="../../Discord.Net.targets" /> | <Import Project="../../Discord.Net.targets" /> | ||||
| <Import Project="../../StyleAnalyzer.targets" /> | <Import Project="../../StyleAnalyzer.targets" /> | ||||
| <PropertyGroup> | <PropertyGroup> | ||||
| @@ -17,9 +17,10 @@ | |||||
| <PropertyGroup> | <PropertyGroup> | ||||
| <DocumentationFile>..\Discord.Net.WebSocket\Discord.Net.WebSocket.xml</DocumentationFile> | <DocumentationFile>..\Discord.Net.WebSocket\Discord.Net.WebSocket.xml</DocumentationFile> | ||||
| </PropertyGroup> | </PropertyGroup> | ||||
| <PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net461|AnyCPU'"> | |||||
| <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> | |||||
| <DefineConstants>TRACE</DefineConstants> | <DefineConstants>TRACE</DefineConstants> | ||||
| </PropertyGroup> | </PropertyGroup> | ||||
| <ItemGroup> | <ItemGroup> | ||||
| <ProjectReference Include="..\Discord.Net.Core\Discord.Net.Core.csproj" /> | <ProjectReference Include="..\Discord.Net.Core\Discord.Net.Core.csproj" /> | ||||
| <ProjectReference Include="..\Discord.Net.Rest\Discord.Net.Rest.csproj" /> | <ProjectReference Include="..\Discord.Net.Rest\Discord.Net.Rest.csproj" /> | ||||
| @@ -2189,6 +2189,11 @@ | |||||
| <member name="P:Discord.WebSocket.SocketStageChannel.Live"> | <member name="P:Discord.WebSocket.SocketStageChannel.Live"> | ||||
| <inheritdoc/> | <inheritdoc/> | ||||
| </member> | </member> | ||||
| <member name="P:Discord.WebSocket.SocketStageChannel.IsSpeaker"> | |||||
| <summary> | |||||
| Returns <see langword="true"/> if the current user is a speaker within the stage, otherwise <see langword="false"/>. | |||||
| </summary> | |||||
| </member> | |||||
| <member name="P:Discord.WebSocket.SocketStageChannel.Speakers"> | <member name="P:Discord.WebSocket.SocketStageChannel.Speakers"> | ||||
| <summary> | <summary> | ||||
| Gets a collection of users who are speakers within the stage. | Gets a collection of users who are speakers within the stage. | ||||
| @@ -2206,6 +2211,18 @@ | |||||
| <member name="M:Discord.WebSocket.SocketStageChannel.RequestToSpeak(Discord.RequestOptions)"> | <member name="M:Discord.WebSocket.SocketStageChannel.RequestToSpeak(Discord.RequestOptions)"> | ||||
| <inheritdoc/> | <inheritdoc/> | ||||
| </member> | </member> | ||||
| <member name="M:Discord.WebSocket.SocketStageChannel.BecomeSpeakerAsync(Discord.RequestOptions)"> | |||||
| <inheritdoc/> | |||||
| </member> | |||||
| <member name="M:Discord.WebSocket.SocketStageChannel.StopSpeakingAsync(Discord.RequestOptions)"> | |||||
| <inheritdoc/> | |||||
| </member> | |||||
| <member name="M:Discord.WebSocket.SocketStageChannel.MoveToSpeaker(Discord.IGuildUser,Discord.RequestOptions)"> | |||||
| <inheritdoc/> | |||||
| </member> | |||||
| <member name="M:Discord.WebSocket.SocketStageChannel.RemoveFromSpeaker(Discord.IGuildUser,Discord.RequestOptions)"> | |||||
| <inheritdoc/> | |||||
| </member> | |||||
| <member name="T:Discord.WebSocket.SocketTextChannel"> | <member name="T:Discord.WebSocket.SocketTextChannel"> | ||||
| <summary> | <summary> | ||||
| Represents a WebSocket-based channel in a guild that can send and receive messages. | Represents a WebSocket-based channel in a guild that can send and receive messages. | ||||
| @@ -75,8 +75,15 @@ namespace Discord.API | |||||
| using (var jsonReader = new JsonTextReader(reader)) | using (var jsonReader = new JsonTextReader(reader)) | ||||
| { | { | ||||
| var msg = _serializer.Deserialize<SocketFrame>(jsonReader); | var msg = _serializer.Deserialize<SocketFrame>(jsonReader); | ||||
| if (msg != null) | if (msg != null) | ||||
| { | |||||
| #if DEBUG_PACKETS | |||||
| Console.WriteLine($"<- {msg.Operation} [{msg.Type ?? "none"}] : {(msg.Payload as Newtonsoft.Json.Linq.JToken)?.ToString().Length}"); | |||||
| #endif | |||||
| await _receivedGatewayEvent.InvokeAsync((GatewayOpCode)msg.Operation, msg.Sequence, msg.Type, msg.Payload).ConfigureAwait(false); | await _receivedGatewayEvent.InvokeAsync((GatewayOpCode)msg.Operation, msg.Sequence, msg.Type, msg.Payload).ConfigureAwait(false); | ||||
| } | |||||
| } | } | ||||
| } | } | ||||
| }; | }; | ||||
| @@ -87,7 +94,13 @@ namespace Discord.API | |||||
| { | { | ||||
| var msg = _serializer.Deserialize<SocketFrame>(jsonReader); | var msg = _serializer.Deserialize<SocketFrame>(jsonReader); | ||||
| if (msg != null) | if (msg != null) | ||||
| { | |||||
| #if DEBUG_PACKETS | |||||
| Console.WriteLine($"<- {msg.Operation} [{msg.Type ?? "none"}] : {(msg.Payload as Newtonsoft.Json.Linq.JToken)?.ToString().Length}"); | |||||
| #endif | |||||
| await _receivedGatewayEvent.InvokeAsync((GatewayOpCode)msg.Operation, msg.Sequence, msg.Type, msg.Payload).ConfigureAwait(false); | await _receivedGatewayEvent.InvokeAsync((GatewayOpCode)msg.Operation, msg.Sequence, msg.Type, msg.Payload).ConfigureAwait(false); | ||||
| } | |||||
| } | } | ||||
| }; | }; | ||||
| WebSocketClient.Closed += async ex => | WebSocketClient.Closed += async ex => | ||||
| @@ -214,8 +227,8 @@ namespace Discord.API | |||||
| await RequestQueue.SendAsync(new WebSocketRequest(WebSocketClient, bytes, true, opCode == GatewayOpCode.Heartbeat, options)).ConfigureAwait(false); | await RequestQueue.SendAsync(new WebSocketRequest(WebSocketClient, bytes, true, opCode == GatewayOpCode.Heartbeat, options)).ConfigureAwait(false); | ||||
| await _sentGatewayMessageEvent.InvokeAsync(opCode).ConfigureAwait(false); | await _sentGatewayMessageEvent.InvokeAsync(opCode).ConfigureAwait(false); | ||||
| #if DEBUG | |||||
| Console.WriteLine($"Sent {opCode}:\n{SerializeJson(payload)}"); | |||||
| #if DEBUG_PACKETS | |||||
| Console.WriteLine($"-> {opCode}:\n{SerializeJson(payload)}"); | |||||
| #endif | #endif | ||||
| } | } | ||||