@@ -622,9 +622,16 @@ namespace Discord.API | |||||
else | else | ||||
return Array.Empty<Message>(); | return Array.Empty<Message>(); | ||||
} | } | ||||
public Task<Message> CreateMessage(ulong channelId, CreateMessageParams args) | |||||
=> CreateMessage(0, channelId, args); | |||||
public async Task<Message> CreateMessage(ulong guildId, ulong channelId, CreateMessageParams args) | |||||
public Task<Message> CreateMessage(ulong guildId, ulong channelId, CreateMessageParams args) | |||||
{ | |||||
if (guildId == 0) throw new ArgumentOutOfRangeException(nameof(guildId)); | |||||
return CreateMessageInternal(guildId, channelId, args); | |||||
} | |||||
public Task<Message> CreateDMMessage(ulong channelId, CreateMessageParams args) | |||||
{ | |||||
return CreateMessageInternal(0, channelId, args); | |||||
} | |||||
public async Task<Message> CreateMessageInternal(ulong guildId, ulong channelId, CreateMessageParams args) | |||||
{ | { | ||||
if (args == null) throw new ArgumentNullException(nameof(args)); | if (args == null) throw new ArgumentNullException(nameof(args)); | ||||
if (channelId == 0) throw new ArgumentOutOfRangeException(nameof(channelId)); | if (channelId == 0) throw new ArgumentOutOfRangeException(nameof(channelId)); | ||||
@@ -637,12 +644,18 @@ namespace Discord.API | |||||
else | else | ||||
return await Send<Message>("POST", $"channels/{channelId}/messages", args, GlobalBucket.DirectMessage).ConfigureAwait(false); | return await Send<Message>("POST", $"channels/{channelId}/messages", args, GlobalBucket.DirectMessage).ConfigureAwait(false); | ||||
} | } | ||||
public Task<Message> UploadFile(ulong channelId, Stream file, UploadFileParams args) | |||||
=> UploadFile(0, channelId, file, args); | |||||
public async Task<Message> UploadFile(ulong guildId, ulong channelId, Stream file, UploadFileParams args) | |||||
public Task<Message> UploadFile(ulong guildId, ulong channelId, Stream file, UploadFileParams args) | |||||
{ | |||||
if (guildId == 0) throw new ArgumentOutOfRangeException(nameof(guildId)); | |||||
return UploadFileInternal(guildId, channelId, file, args); | |||||
} | |||||
public Task<Message> UploadDMFile(ulong channelId, Stream file, UploadFileParams args) | |||||
{ | |||||
return UploadFileInternal(0, channelId, file, args); | |||||
} | |||||
private async Task<Message> UploadFileInternal(ulong guildId, ulong channelId, Stream file, UploadFileParams args) | |||||
{ | { | ||||
if (args == null) throw new ArgumentNullException(nameof(args)); | if (args == null) throw new ArgumentNullException(nameof(args)); | ||||
//if (guildId == 0) throw new ArgumentOutOfRangeException(nameof(guildId)); | |||||
if (channelId == 0) throw new ArgumentOutOfRangeException(nameof(channelId)); | if (channelId == 0) throw new ArgumentOutOfRangeException(nameof(channelId)); | ||||
if (args.Content.IsSpecified) | if (args.Content.IsSpecified) | ||||
{ | { | ||||
@@ -654,11 +667,18 @@ namespace Discord.API | |||||
if (guildId != 0) | if (guildId != 0) | ||||
return await Send<Message>("POST", $"channels/{channelId}/messages", file, args.ToDictionary(), GuildBucket.SendEditMessage, guildId).ConfigureAwait(false); | return await Send<Message>("POST", $"channels/{channelId}/messages", file, args.ToDictionary(), GuildBucket.SendEditMessage, guildId).ConfigureAwait(false); | ||||
else | else | ||||
return await Send<Message>("POST", $"channels/{channelId}/messages", file, args.ToDictionary()).ConfigureAwait(false); | |||||
return await Send<Message>("POST", $"channels/{channelId}/messages", file, args.ToDictionary(), GlobalBucket.DirectMessage).ConfigureAwait(false); | |||||
} | |||||
public Task DeleteMessage(ulong guildId, ulong channelId, ulong messageId) | |||||
{ | |||||
if (guildId == 0) throw new ArgumentOutOfRangeException(nameof(guildId)); | |||||
return DeleteInternalMessage(guildId, channelId, messageId); | |||||
} | } | ||||
public Task DeleteMessage(ulong channelId, ulong messageId) | |||||
=> DeleteMessage(0, channelId, messageId); | |||||
public async Task DeleteMessage(ulong guildId, ulong channelId, ulong messageId) | |||||
public Task DeleteDMMessage(ulong channelId, ulong messageId) | |||||
{ | |||||
return DeleteInternalMessage(0, channelId, messageId); | |||||
} | |||||
private async Task DeleteInternalMessage(ulong guildId, ulong channelId, ulong messageId) | |||||
{ | { | ||||
//if (guildId == 0) throw new ArgumentOutOfRangeException(nameof(guildId)); | //if (guildId == 0) throw new ArgumentOutOfRangeException(nameof(guildId)); | ||||
if (channelId == 0) throw new ArgumentOutOfRangeException(nameof(channelId)); | if (channelId == 0) throw new ArgumentOutOfRangeException(nameof(channelId)); | ||||
@@ -669,11 +689,17 @@ namespace Discord.API | |||||
else | else | ||||
await Send("DELETE", $"channels/{channelId}/messages/{messageId}").ConfigureAwait(false); | await Send("DELETE", $"channels/{channelId}/messages/{messageId}").ConfigureAwait(false); | ||||
} | } | ||||
public Task DeleteMessages(ulong channelId, DeleteMessagesParam args) | |||||
=> DeleteMessages(0, channelId, args); | |||||
public async Task DeleteMessages(ulong guildId, ulong channelId, DeleteMessagesParam args) | |||||
public Task DeleteMessages(ulong guildId, ulong channelId, DeleteMessagesParam args) | |||||
{ | |||||
if (guildId == 0) throw new ArgumentOutOfRangeException(nameof(guildId)); | |||||
return DeleteMessagesInternal(guildId, channelId, args); | |||||
} | |||||
public Task DeleteDMMessages(ulong channelId, DeleteMessagesParam args) | |||||
{ | |||||
return DeleteMessagesInternal(0, channelId, args); | |||||
} | |||||
private async Task DeleteMessagesInternal(ulong guildId, ulong channelId, DeleteMessagesParam args) | |||||
{ | { | ||||
//if (guildId == 0) throw new ArgumentOutOfRangeException(nameof(guildId)); | |||||
if (channelId == 0) throw new ArgumentOutOfRangeException(nameof(channelId)); | if (channelId == 0) throw new ArgumentOutOfRangeException(nameof(channelId)); | ||||
if (args == null) throw new ArgumentNullException(nameof(args)); | if (args == null) throw new ArgumentNullException(nameof(args)); | ||||
if (args.MessageIds == null) throw new ArgumentNullException(nameof(args.MessageIds)); | if (args.MessageIds == null) throw new ArgumentNullException(nameof(args.MessageIds)); | ||||
@@ -694,12 +720,18 @@ namespace Discord.API | |||||
break; | break; | ||||
} | } | ||||
} | } | ||||
public Task<Message> ModifyMessage(ulong channelId, ulong messageId, ModifyMessageParams args) | |||||
=> ModifyMessage(0, channelId, messageId, args); | |||||
public async Task<Message> ModifyMessage(ulong guildId, ulong channelId, ulong messageId, ModifyMessageParams args) | |||||
public Task<Message> ModifyMessage(ulong guildId, ulong channelId, ulong messageId, ModifyMessageParams args) | |||||
{ | |||||
if (guildId == 0) throw new ArgumentOutOfRangeException(nameof(guildId)); | |||||
return ModifyMessageInternal(guildId, channelId, messageId, args); | |||||
} | |||||
public Task<Message> ModifyDMMessage(ulong channelId, ulong messageId, ModifyMessageParams args) | |||||
{ | |||||
return ModifyMessageInternal(0, channelId, messageId, args); | |||||
} | |||||
private async Task<Message> ModifyMessageInternal(ulong guildId, ulong channelId, ulong messageId, ModifyMessageParams args) | |||||
{ | { | ||||
if (args == null) throw new ArgumentNullException(nameof(args)); | if (args == null) throw new ArgumentNullException(nameof(args)); | ||||
//if (guildId == 0) throw new ArgumentOutOfRangeException(nameof(guildId)); | |||||
if (channelId == 0) throw new ArgumentOutOfRangeException(nameof(channelId)); | if (channelId == 0) throw new ArgumentOutOfRangeException(nameof(channelId)); | ||||
if (messageId == 0) throw new ArgumentOutOfRangeException(nameof(messageId)); | if (messageId == 0) throw new ArgumentOutOfRangeException(nameof(messageId)); | ||||
@@ -75,7 +75,7 @@ namespace Discord.Rest | |||||
public async Task<Message> SendMessage(string text, bool isTTS = false) | public async Task<Message> SendMessage(string text, bool isTTS = false) | ||||
{ | { | ||||
var args = new CreateMessageParams { Content = text, IsTTS = isTTS }; | var args = new CreateMessageParams { Content = text, IsTTS = isTTS }; | ||||
var model = await Discord.BaseClient.CreateMessage(Id, args).ConfigureAwait(false); | |||||
var model = await Discord.BaseClient.CreateDMMessage(Id, args).ConfigureAwait(false); | |||||
return new Message(this, model); | return new Message(this, model); | ||||
} | } | ||||
/// <inheritdoc /> | /// <inheritdoc /> | ||||
@@ -85,7 +85,7 @@ namespace Discord.Rest | |||||
using (var file = File.OpenRead(filePath)) | using (var file = File.OpenRead(filePath)) | ||||
{ | { | ||||
var args = new UploadFileParams { Filename = filename, Content = text, IsTTS = isTTS }; | var args = new UploadFileParams { Filename = filename, Content = text, IsTTS = isTTS }; | ||||
var model = await Discord.BaseClient.UploadFile(Id, file, args).ConfigureAwait(false); | |||||
var model = await Discord.BaseClient.UploadDMFile(Id, file, args).ConfigureAwait(false); | |||||
return new Message(this, model); | return new Message(this, model); | ||||
} | } | ||||
} | } | ||||
@@ -93,14 +93,14 @@ namespace Discord.Rest | |||||
public async Task<Message> SendFile(Stream stream, string filename, string text = null, bool isTTS = false) | public async Task<Message> SendFile(Stream stream, string filename, string text = null, bool isTTS = false) | ||||
{ | { | ||||
var args = new UploadFileParams { Filename = filename, Content = text, IsTTS = isTTS }; | var args = new UploadFileParams { Filename = filename, Content = text, IsTTS = isTTS }; | ||||
var model = await Discord.BaseClient.UploadFile(Id, stream, args).ConfigureAwait(false); | |||||
var model = await Discord.BaseClient.UploadDMFile(Id, stream, args).ConfigureAwait(false); | |||||
return new Message(this, model); | return new Message(this, model); | ||||
} | } | ||||
/// <inheritdoc /> | /// <inheritdoc /> | ||||
public async Task DeleteMessages(IEnumerable<IMessage> messages) | public async Task DeleteMessages(IEnumerable<IMessage> messages) | ||||
{ | { | ||||
await Discord.BaseClient.DeleteMessages(Id, new DeleteMessagesParam { MessageIds = messages.Select(x => x.Id) }).ConfigureAwait(false); | |||||
await Discord.BaseClient.DeleteDMMessages(Id, new DeleteMessagesParam { MessageIds = messages.Select(x => x.Id) }).ConfigureAwait(false); | |||||
} | } | ||||
/// <inheritdoc /> | /// <inheritdoc /> | ||||
@@ -127,14 +127,18 @@ namespace Discord.Rest | |||||
if (guildChannel != null) | if (guildChannel != null) | ||||
model = await Discord.BaseClient.ModifyMessage(guildChannel.Guild.Id, Channel.Id, Id, args).ConfigureAwait(false); | model = await Discord.BaseClient.ModifyMessage(guildChannel.Guild.Id, Channel.Id, Id, args).ConfigureAwait(false); | ||||
else | else | ||||
model = await Discord.BaseClient.ModifyMessage(Channel.Id, Id, args).ConfigureAwait(false); | |||||
model = await Discord.BaseClient.ModifyDMMessage(Channel.Id, Id, args).ConfigureAwait(false); | |||||
Update(model); | Update(model); | ||||
} | } | ||||
/// <inheritdoc /> | /// <inheritdoc /> | ||||
public async Task Delete() | public async Task Delete() | ||||
{ | { | ||||
await Discord.BaseClient.DeleteMessage(Channel.Id, Id).ConfigureAwait(false); | |||||
var guildChannel = Channel as GuildChannel; | |||||
if (guildChannel != null) | |||||
await Discord.BaseClient.DeleteMessage(guildChannel.Id, Channel.Id, Id).ConfigureAwait(false); | |||||
else | |||||
await Discord.BaseClient.DeleteDMMessage(Channel.Id, Id).ConfigureAwait(false); | |||||
} | } | ||||
public override string ToString() => Text; | public override string ToString() => Text; | ||||
@@ -75,7 +75,7 @@ namespace Discord.WebSocket | |||||
public async Task<Message> SendMessage(string text, bool isTTS = false) | public async Task<Message> SendMessage(string text, bool isTTS = false) | ||||
{ | { | ||||
var args = new CreateMessageParams { Content = text, IsTTS = isTTS }; | var args = new CreateMessageParams { Content = text, IsTTS = isTTS }; | ||||
var model = await Discord.BaseClient.CreateMessage(Id, args).ConfigureAwait(false); | |||||
var model = await Discord.BaseClient.CreateDMMessage(Id, args).ConfigureAwait(false); | |||||
return new Message(this, model); | return new Message(this, model); | ||||
} | } | ||||
/// <inheritdoc /> | /// <inheritdoc /> | ||||
@@ -85,7 +85,7 @@ namespace Discord.WebSocket | |||||
using (var file = File.OpenRead(filePath)) | using (var file = File.OpenRead(filePath)) | ||||
{ | { | ||||
var args = new UploadFileParams { Filename = filename, Content = text, IsTTS = isTTS }; | var args = new UploadFileParams { Filename = filename, Content = text, IsTTS = isTTS }; | ||||
var model = await Discord.BaseClient.UploadFile(Id, file, args).ConfigureAwait(false); | |||||
var model = await Discord.BaseClient.UploadDMFile(Id, file, args).ConfigureAwait(false); | |||||
return new Message(this, model); | return new Message(this, model); | ||||
} | } | ||||
} | } | ||||
@@ -93,14 +93,14 @@ namespace Discord.WebSocket | |||||
public async Task<Message> SendFile(Stream stream, string filename, string text = null, bool isTTS = false) | public async Task<Message> SendFile(Stream stream, string filename, string text = null, bool isTTS = false) | ||||
{ | { | ||||
var args = new UploadFileParams { Filename = filename, Content = text, IsTTS = isTTS }; | var args = new UploadFileParams { Filename = filename, Content = text, IsTTS = isTTS }; | ||||
var model = await Discord.BaseClient.UploadFile(Id, stream, args).ConfigureAwait(false); | |||||
var model = await Discord.BaseClient.UploadDMFile(Id, stream, args).ConfigureAwait(false); | |||||
return new Message(this, model); | return new Message(this, model); | ||||
} | } | ||||
/// <inheritdoc /> | /// <inheritdoc /> | ||||
public async Task DeleteMessages(IEnumerable<IMessage> messages) | public async Task DeleteMessages(IEnumerable<IMessage> messages) | ||||
{ | { | ||||
await Discord.BaseClient.DeleteMessages(Id, new DeleteMessagesParam { MessageIds = messages.Select(x => x.Id) }).ConfigureAwait(false); | |||||
await Discord.BaseClient.DeleteDMMessages(Id, new DeleteMessagesParam { MessageIds = messages.Select(x => x.Id) }).ConfigureAwait(false); | |||||
} | } | ||||
/// <inheritdoc /> | /// <inheritdoc /> | ||||
@@ -126,13 +126,17 @@ namespace Discord.WebSocket | |||||
if (guildChannel != null) | if (guildChannel != null) | ||||
await Discord.BaseClient.ModifyMessage(guildChannel.Guild.Id, Channel.Id, Id, args).ConfigureAwait(false); | await Discord.BaseClient.ModifyMessage(guildChannel.Guild.Id, Channel.Id, Id, args).ConfigureAwait(false); | ||||
else | else | ||||
await Discord.BaseClient.ModifyMessage(Channel.Id, Id, args).ConfigureAwait(false); | |||||
await Discord.BaseClient.ModifyDMMessage(Channel.Id, Id, args).ConfigureAwait(false); | |||||
} | } | ||||
/// <inheritdoc /> | /// <inheritdoc /> | ||||
public async Task Delete() | public async Task Delete() | ||||
{ | { | ||||
await Discord.BaseClient.DeleteMessage(Channel.Id, Id).ConfigureAwait(false); | |||||
var guildChannel = Channel as GuildChannel; | |||||
if (guildChannel != null) | |||||
await Discord.BaseClient.DeleteMessage(guildChannel.Id, Channel.Id, Id).ConfigureAwait(false); | |||||
else | |||||
await Discord.BaseClient.DeleteDMMessage(Channel.Id, Id).ConfigureAwait(false); | |||||
} | } | ||||
public override string ToString() => Text; | public override string ToString() => Text; | ||||