From 0eb9ff6bd32e8f7a7b8632fd0cc1001d2a059463 Mon Sep 17 00:00:00 2001 From: RogueException Date: Thu, 12 May 2016 10:27:58 -0300 Subject: [PATCH] Fixed several model processing bugs --- src/Discord.Net/API/DiscordRawClient.cs | 18 +++++++++++------- src/Discord.Net/Rest/Entities/Guilds/Guild.cs | 4 ++-- src/Discord.Net/Rest/Entities/Message.cs | 8 ++++---- .../Rest/Entities/Users/GuildUser.cs | 4 ++-- 4 files changed, 19 insertions(+), 15 deletions(-) diff --git a/src/Discord.Net/API/DiscordRawClient.cs b/src/Discord.Net/API/DiscordRawClient.cs index 49cc122f4..a251af8c5 100644 --- a/src/Discord.Net/API/DiscordRawClient.cs +++ b/src/Discord.Net/API/DiscordRawClient.cs @@ -219,7 +219,7 @@ namespace Discord.API switch (channels.Length) { case 0: - throw new ArgumentOutOfRangeException(nameof(args)); + return; case 1: await ModifyGuildChannel(channels[0].Id, new ModifyGuildChannelParams { Position = channels[0].Position }).ConfigureAwait(false); break; @@ -476,8 +476,10 @@ namespace Discord.API if (result.Count > 1) return result.SelectMany(x => x); - else + else if (result.Count == 1) return result[0]; + else + return Array.Empty(); } public async Task RemoveGuildMember(ulong guildId, ulong userId) { @@ -535,7 +537,7 @@ namespace Discord.API switch (roles.Length) { case 0: - throw new ArgumentOutOfRangeException(nameof(args)); + return Array.Empty(); case 1: return ImmutableArray.Create(await ModifyGuildRole(guildId, roles[0].Id, roles[0]).ConfigureAwait(false)); default: @@ -580,10 +582,12 @@ namespace Discord.API if (models.Length != DiscordConfig.MaxMessagesPerBatch) { i++; break; } } - if (runs > 1) - return result.Take(runs).SelectMany(x => x); - else + if (i > 1) + return result.Take(i).SelectMany(x => x); + else if (i == 1) return result[0]; + else + return Array.Empty(); } public Task CreateMessage(ulong channelId, CreateMessageParams args) => CreateMessage(0, channelId, args); @@ -636,7 +640,7 @@ namespace Discord.API switch (messageIds.Length) { case 0: - throw new ArgumentOutOfRangeException(nameof(args.MessageIds)); + return; case 1: await DeleteMessage(guildId, channelId, messageIds[0]).ConfigureAwait(false); break; diff --git a/src/Discord.Net/Rest/Entities/Guilds/Guild.cs b/src/Discord.Net/Rest/Entities/Guilds/Guild.cs index bcc73e993..18a80655f 100644 --- a/src/Discord.Net/Rest/Entities/Guilds/Guild.cs +++ b/src/Discord.Net/Rest/Entities/Guilds/Guild.cs @@ -81,11 +81,11 @@ namespace Discord.Rest { var emojis = ImmutableArray.CreateBuilder(model.Emojis.Length); for (int i = 0; i < model.Emojis.Length; i++) - emojis[i] = new Emoji(model.Emojis[i]); + emojis.Add(new Emoji(model.Emojis[i])); Emojis = emojis.ToArray(); } else - Emojis = ImmutableArray.Empty; + Emojis = Array.Empty(); var roles = new ConcurrentDictionary(1, model.Roles?.Length ?? 0); if (model.Roles != null) diff --git a/src/Discord.Net/Rest/Entities/Message.cs b/src/Discord.Net/Rest/Entities/Message.cs index 4f232bed6..ebffae995 100644 --- a/src/Discord.Net/Rest/Entities/Message.cs +++ b/src/Discord.Net/Rest/Entities/Message.cs @@ -68,7 +68,7 @@ namespace Discord.Rest Attachments = ImmutableArray.Create(attachments); } else - Attachments = ImmutableArray.Empty; + Attachments = Array.Empty(); if (model.Embeds.Length > 0) { @@ -78,18 +78,18 @@ namespace Discord.Rest Embeds = ImmutableArray.Create(embeds); } else - Embeds = ImmutableArray.Empty; + Embeds = Array.Empty(); if (model.Mentions.Length > 0) { var discord = Discord; var builder = ImmutableArray.CreateBuilder(model.Mentions.Length); for (int i = 0; i < model.Mentions.Length; i++) - builder[i] = new PublicUser(discord, model.Mentions[i]); + builder.Add(new PublicUser(discord, model.Mentions[i])); MentionedUsers = builder.ToArray(); } else - MentionedUsers = ImmutableArray.Empty; + MentionedUsers = Array.Empty(); MentionedChannelIds = MentionHelper.GetChannelMentions(model.Content); MentionedRoleIds = MentionHelper.GetRoleMentions(model.Content); if (model.IsMentioningEveryone) diff --git a/src/Discord.Net/Rest/Entities/Users/GuildUser.cs b/src/Discord.Net/Rest/Entities/Users/GuildUser.cs index 1df857695..b62656dfc 100644 --- a/src/Discord.Net/Rest/Entities/Users/GuildUser.cs +++ b/src/Discord.Net/Rest/Entities/Users/GuildUser.cs @@ -39,9 +39,9 @@ namespace Discord.Rest Nickname = model.Nick; var roles = ImmutableArray.CreateBuilder(model.Roles.Length + 1); - roles[0] = Guild.EveryoneRole; + roles.Add(Guild.EveryoneRole); for (int i = 0; i < model.Roles.Length; i++) - roles[i + 1] = Guild.GetRole(model.Roles[i]); + roles.Add(Guild.GetRole(model.Roles[i])); _roles = roles.ToImmutable(); }