diff --git a/src/Discord.Net/API/DiscordRawClient.cs b/src/Discord.Net/API/DiscordRawClient.cs index b4f23d5d4..1de95e6a3 100644 --- a/src/Discord.Net/API/DiscordRawClient.cs +++ b/src/Discord.Net/API/DiscordRawClient.cs @@ -622,9 +622,16 @@ namespace Discord.API else return Array.Empty(); } - public Task CreateMessage(ulong channelId, CreateMessageParams args) - => CreateMessage(0, channelId, args); - public async Task CreateMessage(ulong guildId, ulong channelId, CreateMessageParams args) + public Task CreateMessage(ulong guildId, ulong channelId, CreateMessageParams args) + { + if (guildId == 0) throw new ArgumentOutOfRangeException(nameof(guildId)); + return CreateMessageInternal(guildId, channelId, args); + } + public Task CreateDMMessage(ulong channelId, CreateMessageParams args) + { + return CreateMessageInternal(0, channelId, args); + } + public async Task CreateMessageInternal(ulong guildId, ulong channelId, CreateMessageParams args) { if (args == null) throw new ArgumentNullException(nameof(args)); if (channelId == 0) throw new ArgumentOutOfRangeException(nameof(channelId)); @@ -637,12 +644,18 @@ namespace Discord.API else return await Send("POST", $"channels/{channelId}/messages", args, GlobalBucket.DirectMessage).ConfigureAwait(false); } - public Task UploadFile(ulong channelId, Stream file, UploadFileParams args) - => UploadFile(0, channelId, file, args); - public async Task UploadFile(ulong guildId, ulong channelId, Stream file, UploadFileParams args) + public Task 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 UploadDMFile(ulong channelId, Stream file, UploadFileParams args) + { + return UploadFileInternal(0, channelId, file, args); + } + private async Task UploadFileInternal(ulong guildId, ulong channelId, Stream file, UploadFileParams 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 (args.Content.IsSpecified) { @@ -654,11 +667,18 @@ namespace Discord.API if (guildId != 0) return await Send("POST", $"channels/{channelId}/messages", file, args.ToDictionary(), GuildBucket.SendEditMessage, guildId).ConfigureAwait(false); else - return await Send("POST", $"channels/{channelId}/messages", file, args.ToDictionary()).ConfigureAwait(false); + return await Send("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 (channelId == 0) throw new ArgumentOutOfRangeException(nameof(channelId)); @@ -669,11 +689,17 @@ namespace Discord.API else 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 (args == null) throw new ArgumentNullException(nameof(args)); if (args.MessageIds == null) throw new ArgumentNullException(nameof(args.MessageIds)); @@ -694,12 +720,18 @@ namespace Discord.API break; } } - public Task ModifyMessage(ulong channelId, ulong messageId, ModifyMessageParams args) - => ModifyMessage(0, channelId, messageId, args); - public async Task ModifyMessage(ulong guildId, ulong channelId, ulong messageId, ModifyMessageParams args) + public Task 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 ModifyDMMessage(ulong channelId, ulong messageId, ModifyMessageParams args) + { + return ModifyMessageInternal(0, channelId, messageId, args); + } + private async Task ModifyMessageInternal(ulong guildId, ulong channelId, ulong messageId, ModifyMessageParams 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 (messageId == 0) throw new ArgumentOutOfRangeException(nameof(messageId)); diff --git a/src/Discord.Net/Rest/Entities/Channels/DMChannel.cs b/src/Discord.Net/Rest/Entities/Channels/DMChannel.cs index ccda2bbd9..e7e25150b 100644 --- a/src/Discord.Net/Rest/Entities/Channels/DMChannel.cs +++ b/src/Discord.Net/Rest/Entities/Channels/DMChannel.cs @@ -75,7 +75,7 @@ namespace Discord.Rest public async Task SendMessage(string text, bool isTTS = false) { 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); } /// @@ -85,7 +85,7 @@ namespace Discord.Rest using (var file = File.OpenRead(filePath)) { 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); } } @@ -93,14 +93,14 @@ namespace Discord.Rest public async Task SendFile(Stream stream, string filename, string text = null, bool isTTS = false) { 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); } /// public async Task DeleteMessages(IEnumerable 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); } /// diff --git a/src/Discord.Net/Rest/Entities/Message.cs b/src/Discord.Net/Rest/Entities/Message.cs index 017074a9f..25f2f64d8 100644 --- a/src/Discord.Net/Rest/Entities/Message.cs +++ b/src/Discord.Net/Rest/Entities/Message.cs @@ -127,14 +127,18 @@ namespace Discord.Rest if (guildChannel != null) model = await Discord.BaseClient.ModifyMessage(guildChannel.Guild.Id, Channel.Id, Id, args).ConfigureAwait(false); 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); } /// 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; diff --git a/src/Discord.Net/WebSocket/Entities/Channels/DMChannel.cs b/src/Discord.Net/WebSocket/Entities/Channels/DMChannel.cs index c1e1f3474..142295310 100644 --- a/src/Discord.Net/WebSocket/Entities/Channels/DMChannel.cs +++ b/src/Discord.Net/WebSocket/Entities/Channels/DMChannel.cs @@ -75,7 +75,7 @@ namespace Discord.WebSocket public async Task SendMessage(string text, bool isTTS = false) { 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); } /// @@ -85,7 +85,7 @@ namespace Discord.WebSocket using (var file = File.OpenRead(filePath)) { 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); } } @@ -93,14 +93,14 @@ namespace Discord.WebSocket public async Task SendFile(Stream stream, string filename, string text = null, bool isTTS = false) { 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); } /// public async Task DeleteMessages(IEnumerable 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); } /// diff --git a/src/Discord.Net/WebSocket/Entities/Message.cs b/src/Discord.Net/WebSocket/Entities/Message.cs index b5e659862..e55160415 100644 --- a/src/Discord.Net/WebSocket/Entities/Message.cs +++ b/src/Discord.Net/WebSocket/Entities/Message.cs @@ -126,13 +126,17 @@ namespace Discord.WebSocket if (guildChannel != null) await Discord.BaseClient.ModifyMessage(guildChannel.Guild.Id, Channel.Id, Id, args).ConfigureAwait(false); else - await Discord.BaseClient.ModifyMessage(Channel.Id, Id, args).ConfigureAwait(false); + await Discord.BaseClient.ModifyDMMessage(Channel.Id, Id, args).ConfigureAwait(false); } /// 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;