diff --git a/src/Discord.Net.Commands/CommandService.cs b/src/Discord.Net.Commands/CommandService.cs index 8aff5f715..b610fa4b7 100644 --- a/src/Discord.Net.Commands/CommandService.cs +++ b/src/Discord.Net.Commands/CommandService.cs @@ -213,12 +213,12 @@ namespace Discord.Commands { if (parseResult.Error == CommandError.MultipleMatches) { - TypeReaderValue[] argList, paramList; + IReadOnlyList argList, paramList; switch (multiMatchHandling) { case MultiMatchHandling.Best: - argList = parseResult.ArgValues.Select(x => x.Values.OrderByDescending(y => y.Score).First()).ToArray(); - paramList = parseResult.ParamValues.Select(x => x.Values.OrderByDescending(y => y.Score).First()).ToArray(); + argList = parseResult.ArgValues.Select(x => x.Values.OrderByDescending(y => y.Score).First()).ToImmutableArray(); + paramList = parseResult.ParamValues.Select(x => x.Values.OrderByDescending(y => y.Score).First()).ToImmutableArray(); parseResult = ParseResult.FromSuccess(argList, paramList); break; } diff --git a/src/Discord.Net.Commands/Readers/UserTypeReader.cs b/src/Discord.Net.Commands/Readers/UserTypeReader.cs index c6416895a..c77ece4a1 100644 --- a/src/Discord.Net.Commands/Readers/UserTypeReader.cs +++ b/src/Discord.Net.Commands/Readers/UserTypeReader.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Collections.Immutable; using System.Globalization; using System.Linq; using System.Threading.Tasks; @@ -74,7 +75,7 @@ namespace Discord.Commands } if (results.Count > 0) - return TypeReaderResult.FromSuccess(results.Values.ToArray()); + return TypeReaderResult.FromSuccess(results.Values.ToImmutableArray()); return TypeReaderResult.FromError(CommandError.ObjectNotFound, "User not found."); } diff --git a/src/Discord.Net.Core/API/DiscordRestApiClient.cs b/src/Discord.Net.Core/API/DiscordRestApiClient.cs index 51c40eadf..d8f279132 100644 --- a/src/Discord.Net.Core/API/DiscordRestApiClient.cs +++ b/src/Discord.Net.Core/API/DiscordRestApiClient.cs @@ -832,7 +832,7 @@ namespace Discord.API Preconditions.NotNull(args, nameof(args)); options = RequestOptions.CreateOrClone(options); - var roles = args.ToArray(); + var roles = args.ToImmutableArray(); switch (roles.Length) { case 0: diff --git a/src/Discord.Net.Rest/Entities/Channels/RestGuildChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestGuildChannel.cs index bb706fd07..72dd4a48b 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestGuildChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestGuildChannel.cs @@ -15,11 +15,11 @@ namespace Discord.Rest public IReadOnlyCollection PermissionOverwrites => _overwrites; internal IGuild Guild { get; } - public ulong GuildId => Guild.Id; - public string Name { get; private set; } public int Position { get; private set; } + public ulong GuildId => Guild.Id; + internal RestGuildChannel(BaseDiscordClient discord, IGuild guild, ulong id) : base(discord, id) { diff --git a/src/Discord.Net.Rest/Entities/Guilds/RestGuildIntegration.cs b/src/Discord.Net.Rest/Entities/Guilds/RestGuildIntegration.cs index 79b75170b..b90c492ab 100644 --- a/src/Discord.Net.Rest/Entities/Guilds/RestGuildIntegration.cs +++ b/src/Discord.Net.Rest/Entities/Guilds/RestGuildIntegration.cs @@ -17,7 +17,6 @@ namespace Discord.Rest public bool IsSyncing { get; private set; } public ulong ExpireBehavior { get; private set; } public ulong ExpireGracePeriod { get; private set; } - public ulong GuildId { get; private set; } public ulong RoleId { get; private set; } public RestUser User { get; private set; } diff --git a/src/Discord.Net.Rest/Entities/Invites/RestInvite.cs b/src/Discord.Net.Rest/Entities/Invites/RestInvite.cs index 6beabacb1..983b2986b 100644 --- a/src/Discord.Net.Rest/Entities/Invites/RestInvite.cs +++ b/src/Discord.Net.Rest/Entities/Invites/RestInvite.cs @@ -9,7 +9,6 @@ namespace Discord.Rest { public string ChannelName { get; private set; } public string GuildName { get; private set; } - public ulong ChannelId { get; private set; } public ulong GuildId { get; private set; } diff --git a/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs b/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs index 1566fb6b8..bf1a1e2a6 100644 --- a/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs +++ b/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs @@ -19,7 +19,6 @@ namespace Discord.Rest public virtual bool IsPinned => false; public virtual bool IsWebhook => false; public virtual DateTimeOffset? EditedTimestamp => null; - public virtual IReadOnlyCollection Attachments => ImmutableArray.Create(); public virtual IReadOnlyCollection Embeds => ImmutableArray.Create(); public virtual IReadOnlyCollection MentionedChannelIds => ImmutableArray.Create(); diff --git a/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs b/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs index fc59b0057..b1da6c0b5 100644 --- a/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs +++ b/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs @@ -25,7 +25,6 @@ namespace Discord.Rest public override bool IsPinned => _isPinned; public override bool IsWebhook => WebhookId != null; public override DateTimeOffset? EditedTimestamp => DateTimeUtils.FromTicks(_editedTimestampTicks); - public override IReadOnlyCollection Attachments => _attachments; public override IReadOnlyCollection Embeds => _embeds; public override IReadOnlyCollection MentionedChannelIds => _mentionedChannelIds; diff --git a/src/Discord.Net.Rest/Entities/Roles/RestRole.cs b/src/Discord.Net.Rest/Entities/Roles/RestRole.cs index 1f8dd0f67..d2c3e01bd 100644 --- a/src/Discord.Net.Rest/Entities/Roles/RestRole.cs +++ b/src/Discord.Net.Rest/Entities/Roles/RestRole.cs @@ -10,7 +10,6 @@ namespace Discord.Rest public class RestRole : RestEntity, IRole { public RestGuild Guild { get; } - public Color Color { get; private set; } public bool IsHoisted { get; private set; } public bool IsManaged { get; private set; } diff --git a/src/Discord.Net.Rest/Entities/Users/RestConnection.cs b/src/Discord.Net.Rest/Entities/Users/RestConnection.cs index 2ee1e0e7d..b8b83be3e 100644 --- a/src/Discord.Net.Rest/Entities/Users/RestConnection.cs +++ b/src/Discord.Net.Rest/Entities/Users/RestConnection.cs @@ -12,7 +12,6 @@ namespace Discord public string Type { get; } public string Name { get; } public bool IsRevoked { get; } - public IReadOnlyCollection IntegrationIds { get; } internal RestConnection(string id, string type, string name, bool isRevoked, IReadOnlyCollection integrationIds) diff --git a/src/Discord.Net.WebSocket/API/Gateway/RequestMembersParams.cs b/src/Discord.Net.WebSocket/API/Gateway/RequestMembersParams.cs index d32f80522..a33d1f412 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/RequestMembersParams.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/RequestMembersParams.cs @@ -14,8 +14,6 @@ namespace Discord.API.Gateway public int Limit { get; set; } [JsonProperty("guild_id")] - private ulong[] _guildIds { get; set; } - public IEnumerable GuildIds { set { _guildIds = value.ToArray(); } } - public IEnumerable Guilds { set { _guildIds = value.Select(x => x.Id).ToArray(); } } + private ulong[] GuildIds { get; set; } } } diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index 18fe2a610..4f3960623 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -404,11 +404,11 @@ namespace Discord.WebSocket => DownloadUsersAsync(guilds.Select(x => x as SocketGuild).Where(x => x != null)); private async Task DownloadUsersAsync(IEnumerable guilds) { - var cachedGuilds = guilds.ToArray(); + var cachedGuilds = guilds.ToImmutableArray(); if (cachedGuilds.Length == 0) return; //Wait for unsynced guilds to sync first. - var unsyncedGuilds = guilds.Select(x => x.SyncPromise).Where(x => !x.IsCompleted).ToArray(); + var unsyncedGuilds = guilds.Select(x => x.SyncPromise).Where(x => !x.IsCompleted).ToImmutableArray(); if (unsyncedGuilds.Length > 0) await Task.WhenAll(unsyncedGuilds); @@ -1565,7 +1565,7 @@ namespace Discord.WebSocket } private async Task SyncGuildsAsync() { - var guildIds = Guilds.Where(x => !x.IsSynced).Select(x => x.Id).ToArray(); + var guildIds = Guilds.Where(x => !x.IsSynced).Select(x => x.Id).ToImmutableArray(); if (guildIds.Length > 0) await ApiClient.SendGuildSyncAsync(guildIds).ConfigureAwait(false); }