diff --git a/src/Discord.Net/DiscordClient.API.cs b/src/Discord.Net/DiscordClient.API.cs index b9539d48f..900ddbdfc 100644 --- a/src/Discord.Net/DiscordClient.API.cs +++ b/src/Discord.Net/DiscordClient.API.cs @@ -245,7 +245,7 @@ namespace Discord => SendMessage(channel?.Id, text, mentions); /// Sends a message to the provided channel, mentioning certain users. /// While not required, it is recommended to include a mention reference in the text (see User.Mention). - public async Task SendMessage(string channelId, string text, string[] mentions) + public async Task SendMessage(string channelId, string text, string[] mentions, bool isTextToSpeech = false) { CheckReady(); if (channelId == null) throw new ArgumentNullException(nameof(channelId)); @@ -267,7 +267,8 @@ namespace Discord Content = blockText, Timestamp = DateTime.UtcNow, Author = new UserReference { Avatar = _currentUser.AvatarId, Discriminator = _currentUser.Discriminator, Id = _currentUser.Id, Username = _currentUser.Name }, - ChannelId = channelId + ChannelId = channelId, + IsTextToSpeech = isTextToSpeech }); msg.IsQueued = true; msg.Nonce = nonce; @@ -276,11 +277,11 @@ namespace Discord } else { - var model = await _api.SendMessage(channelId, blockText, mentions, nonce).ConfigureAwait(false); + var model = await _api.SendMessage(channelId, blockText, mentions, nonce, isTextToSpeech).ConfigureAwait(false); var msg = _messages.GetOrAdd(model.Id, channelId, model.Author.Id); msg.Update(model); RaiseMessageSent(msg); - } + } await Task.Delay(1000).ConfigureAwait(false); } return result; diff --git a/src/Discord.Net/DiscordClient.cs b/src/Discord.Net/DiscordClient.cs index 93fef55ac..a3dc31a93 100644 --- a/src/Discord.Net/DiscordClient.cs +++ b/src/Discord.Net/DiscordClient.cs @@ -791,7 +791,7 @@ namespace Discord Responses.SendMessage response = null; try { - response = await _api.SendMessage(msg.ChannelId, msg.RawText, msg.MentionIds, msg.Nonce).ConfigureAwait(false); + response = await _api.SendMessage(msg.ChannelId, msg.RawText, msg.MentionIds, msg.Nonce, msg.IsTTS).ConfigureAwait(false); } catch (WebException) { break; } catch (HttpException) { hasFailed = true; } diff --git a/src/Discord.Net/Net/API/DiscordAPIClient.cs b/src/Discord.Net/Net/API/DiscordAPIClient.cs index 280862564..426505634 100644 --- a/src/Discord.Net/Net/API/DiscordAPIClient.cs +++ b/src/Discord.Net/Net/API/DiscordAPIClient.cs @@ -125,9 +125,9 @@ namespace Discord.Net.API } //Chat - public Task SendMessage(string channelId, string message, string[] mentions, string nonce) + public Task SendMessage(string channelId, string message, string[] mentions, string nonce, bool isTTS) { - var request = new Requests.SendMessage { Content = message, Mentions = mentions, Nonce = nonce }; + var request = new Requests.SendMessage { Content = message, Mentions = mentions, Nonce = nonce, IsTTS = isTTS }; return _rest.Post(Endpoints.ChannelMessages(channelId), request); } public Task EditMessage(string messageId, string channelId, string message, string[] mentions) diff --git a/src/Discord.Net/Net/API/Requests.cs b/src/Discord.Net/Net/API/Requests.cs index 616ea7e70..906c676cd 100644 --- a/src/Discord.Net/Net/API/Requests.cs +++ b/src/Discord.Net/Net/API/Requests.cs @@ -69,6 +69,8 @@ namespace Discord.Net.API public string[] Mentions; [JsonProperty(PropertyName = "nonce")] public string Nonce; + [JsonProperty(PropertyName = "tts")] + public bool IsTTS; } public sealed class EditMessage { diff --git a/src/Discord.Net/Net/WebSockets/WebSocket.BuiltIn.cs b/src/Discord.Net/Net/WebSockets/WebSocket.BuiltIn.cs index f084d7177..2a04b114d 100644 --- a/src/Discord.Net/Net/WebSockets/WebSocket.BuiltIn.cs +++ b/src/Discord.Net/Net/WebSockets/WebSocket.BuiltIn.cs @@ -77,7 +77,7 @@ namespace Discord.Net.WebSockets try { - result = await _webSocket.ReceiveAsync(buffer, cancelToken).ConfigureAwait(false); + result = await _webSocket.ReceiveAsync(buffer, cancelToken).ConfigureAwait(false); } catch (Win32Exception ex) when (ex.HResult == HR_TIMEOUT) {