@@ -245,7 +245,7 @@ namespace Discord | |||||
=> SendMessage(channel?.Id, text, mentions); | => SendMessage(channel?.Id, text, mentions); | ||||
/// <summary> Sends a message to the provided channel, mentioning certain users. </summary> | /// <summary> Sends a message to the provided channel, mentioning certain users. </summary> | ||||
/// <remarks> While not required, it is recommended to include a mention reference in the text (see User.Mention). </remarks> | /// <remarks> While not required, it is recommended to include a mention reference in the text (see User.Mention). </remarks> | ||||
public async Task<Message[]> SendMessage(string channelId, string text, string[] mentions) | |||||
public async Task<Message[]> SendMessage(string channelId, string text, string[] mentions, bool isTextToSpeech = false) | |||||
{ | { | ||||
CheckReady(); | CheckReady(); | ||||
if (channelId == null) throw new ArgumentNullException(nameof(channelId)); | if (channelId == null) throw new ArgumentNullException(nameof(channelId)); | ||||
@@ -267,7 +267,8 @@ namespace Discord | |||||
Content = blockText, | Content = blockText, | ||||
Timestamp = DateTime.UtcNow, | Timestamp = DateTime.UtcNow, | ||||
Author = new UserReference { Avatar = _currentUser.AvatarId, Discriminator = _currentUser.Discriminator, Id = _currentUser.Id, Username = _currentUser.Name }, | 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.IsQueued = true; | ||||
msg.Nonce = nonce; | msg.Nonce = nonce; | ||||
@@ -276,11 +277,11 @@ namespace Discord | |||||
} | } | ||||
else | 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); | var msg = _messages.GetOrAdd(model.Id, channelId, model.Author.Id); | ||||
msg.Update(model); | msg.Update(model); | ||||
RaiseMessageSent(msg); | RaiseMessageSent(msg); | ||||
} | |||||
} | |||||
await Task.Delay(1000).ConfigureAwait(false); | await Task.Delay(1000).ConfigureAwait(false); | ||||
} | } | ||||
return result; | return result; | ||||
@@ -791,7 +791,7 @@ namespace Discord | |||||
Responses.SendMessage response = null; | Responses.SendMessage response = null; | ||||
try | 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 (WebException) { break; } | ||||
catch (HttpException) { hasFailed = true; } | catch (HttpException) { hasFailed = true; } | ||||
@@ -125,9 +125,9 @@ namespace Discord.Net.API | |||||
} | } | ||||
//Chat | //Chat | ||||
public Task<Responses.SendMessage> SendMessage(string channelId, string message, string[] mentions, string nonce) | |||||
public Task<Responses.SendMessage> 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<Responses.SendMessage>(Endpoints.ChannelMessages(channelId), request); | return _rest.Post<Responses.SendMessage>(Endpoints.ChannelMessages(channelId), request); | ||||
} | } | ||||
public Task<Responses.EditMessage> EditMessage(string messageId, string channelId, string message, string[] mentions) | public Task<Responses.EditMessage> EditMessage(string messageId, string channelId, string message, string[] mentions) | ||||
@@ -69,6 +69,8 @@ namespace Discord.Net.API | |||||
public string[] Mentions; | public string[] Mentions; | ||||
[JsonProperty(PropertyName = "nonce")] | [JsonProperty(PropertyName = "nonce")] | ||||
public string Nonce; | public string Nonce; | ||||
[JsonProperty(PropertyName = "tts")] | |||||
public bool IsTTS; | |||||
} | } | ||||
public sealed class EditMessage | public sealed class EditMessage | ||||
{ | { | ||||
@@ -77,7 +77,7 @@ namespace Discord.Net.WebSockets | |||||
try | 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) | catch (Win32Exception ex) when (ex.HResult == HR_TIMEOUT) | ||||
{ | { | ||||