@@ -665,30 +665,33 @@ namespace Discord
}
}
//Chat
//Chat
public Task SendMessage(Channel channel, string text)
public Task<Message[]> SendMessage(Channel channel, string text)
=> SendMessage(channel.Id, text, new string[0]);
=> SendMessage(channel.Id, text, new string[0]);
public Task SendMessage(string channelId, string text)
public Task<Message[]> SendMessage(string channelId, string text)
=> SendMessage(channelId, text, new string[0]);
=> SendMessage(channelId, text, new string[0]);
public Task SendMessage(Channel channel, string text, string[] mentions)
public Task<Message[]> SendMessage(Channel channel, string text, string[] mentions)
=> SendMessage(channel, text, mentions);
=> SendMessage(channel, text, mentions);
public async Task SendMessage(string channelId, string text, string[] mentions)
public async Task<Message[]> SendMessage(string channelId, string text, string[] mentions)
{
{
CheckReady();
CheckReady();
if (text.Length <= 2000)
if (text.Length <= 2000)
{
{
var msg = await DiscordAPI.SendMessage(channelId, text, mentions, _httpOptions);
var msg = await DiscordAPI.SendMessage(channelId, text, mentions, _httpOptions);
_messages.Update(msg.Id, channelId, msg);
return new Message[] { _messages.Update(msg.Id, channelId, msg) } ;
}
}
else
else
{
{
int blockCount = (int)Math.Ceiling(text.Length / (double)DiscordAPI.MaxMessageSize);
int blockCount = (int)Math.Ceiling(text.Length / (double)DiscordAPI.MaxMessageSize);
Message[] result = new Message[blockCount];
for (int i = 0; i < blockCount; i++)
for (int i = 0; i < blockCount; i++)
{
{
int index = i * DiscordAPI.MaxMessageSize;
int index = i * DiscordAPI.MaxMessageSize;
var msg = await DiscordAPI.SendMessage(channelId, text.Substring(index, Math.Min(2000, text.Length - index)), mentions, _httpOptions);
var msg = await DiscordAPI.SendMessage(channelId, text.Substring(index, Math.Min(2000, text.Length - index)), mentions, _httpOptions);
_messages.Update(msg.Id, channelId, msg);
result[i] = _messages.Update(msg.Id, channelId, msg);
await Task.Delay(1000);
await Task.Delay(1000);
}
}
return result;
}
}
}
}
@@ -714,13 +717,16 @@ namespace Discord
public Task DeleteMessage(Message msg)
public Task DeleteMessage(Message msg)
=> DeleteMessage(msg.ChannelId, msg.Id);
=> DeleteMessage(msg.ChannelId, msg.Id);
public async Task DeleteMessage(string channelId, string msgId)
public async Task<Message> DeleteMessage(string channelId, string msgId)
{
{
try
try
{
{
await DiscordAPI.DeleteMessage(channelId, msgId, _httpOptions);
await DiscordAPI.DeleteMessage(channelId, msgId, _httpOptions);
return _messages.Remove(msgId);
}
}
catch (WebException ex) when ((ex.Response as HttpWebResponse)?.StatusCode == HttpStatusCode.NotFound) { }
catch (WebException ex) when ((ex.Response as HttpWebResponse)?.StatusCode == HttpStatusCode.NotFound) { }
catch (WebException ex) when ((ex.Response as HttpWebResponse)?.StatusCode == HttpStatusCode.InternalServerError) { } //TODO: Remove me - temporary fix for deleting nonexisting messages
return null;
}
}
//Voice
//Voice