From db90eab9534967a9b4a43436991711a372aec320 Mon Sep 17 00:00:00 2001 From: Still Hsu <341464@gmail.com> Date: Tue, 21 Aug 2018 06:27:50 +0800 Subject: [PATCH 1/5] Update README.md (#1117) * Initial commit * Add alternative suggestion * Fix typo * Update README.md --- README.md | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/README.md b/README.md index bd0ef20c7..7dc8cd788 100644 --- a/README.md +++ b/README.md @@ -16,13 +16,9 @@ Our stable builds available from NuGet through the Discord.Net metapackage: The individual components may also be installed from NuGet: - [Discord.Net.Commands](https://www.nuget.org/packages/Discord.Net.Commands/) - [Discord.Net.Rest](https://www.nuget.org/packages/Discord.Net.Rest/) -- [Discord.Net.Rpc](https://www.nuget.org/packages/Discord.Net.Rpc/) - [Discord.Net.WebSocket](https://www.nuget.org/packages/Discord.Net.WebSocket/) - [Discord.Net.Webhook](https://www.nuget.org/packages/Discord.Net.Webhook/) -The following provider is available for platforms not supporting .NET Standard 1.3: -- [Discord.Net.Providers.WS4Net](https://www.nuget.org/packages/Discord.Net.Providers.WS4Net/) - ### Unstable (MyGet) Nightly builds are available through our MyGet feed (`https://www.myget.org/F/discord-net/api/v3/index.json`). @@ -41,5 +37,4 @@ The .NET Core workload must be selected during Visual Studio installation. ## Known Issues ### WebSockets (Win7 and earlier) -.NET Core 1.1 does not support WebSockets on Win7 and earlier. It's recommended to use the Discord.Net.Providers.WS4Net package until this is resolved. -Track the issue [here](https://github.com/dotnet/corefx/issues/9503). +.NET Core 1.1 does not support WebSockets on Win7 and earlier. This issue has been fixed since the release of .NET Core 2.1. It is recommended to target .NET Core 2.1 or above for your project if you wish to run your bot on legacy platforms; alternatively, you may choose to install the [Discord.Net.Providers.WS4Net](https://www.nuget.org/packages/Discord.Net.Providers.WS4Net/) package. From 4259b8cb0cfb63e66cde9d0f2c3e7de5a59971ab Mon Sep 17 00:00:00 2001 From: JustNrik <35231903+JustNrik@users.noreply.github.com> Date: Mon, 27 Aug 2018 00:11:55 -0400 Subject: [PATCH 2/5] Update CommandAttribute.cs Nullable is not valid for Attributes, this is my suggested fix. --- src/Discord.Net.Commands/Attributes/CommandAttribute.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Discord.Net.Commands/Attributes/CommandAttribute.cs b/src/Discord.Net.Commands/Attributes/CommandAttribute.cs index a0fcf3e4a..a9df3b409 100644 --- a/src/Discord.Net.Commands/Attributes/CommandAttribute.cs +++ b/src/Discord.Net.Commands/Attributes/CommandAttribute.cs @@ -17,5 +17,10 @@ namespace Discord.Commands { Text = text; } + public CommandAttribute(string text, bool ignoreExtraArgs) + { + Text = text; + IgnoreExtraArgs = ignoreExtraArgs; + } } } From c56fff9fe55648cdb09325bf95bd244a125f0adc Mon Sep 17 00:00:00 2001 From: JustNrik <35231903+JustNrik@users.noreply.github.com> Date: Mon, 27 Aug 2018 00:44:35 -0400 Subject: [PATCH 3/5] Update CommandAttribute.cs --- src/Discord.Net.Commands/Attributes/CommandAttribute.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Discord.Net.Commands/Attributes/CommandAttribute.cs b/src/Discord.Net.Commands/Attributes/CommandAttribute.cs index a9df3b409..ac3ba599e 100644 --- a/src/Discord.Net.Commands/Attributes/CommandAttribute.cs +++ b/src/Discord.Net.Commands/Attributes/CommandAttribute.cs @@ -7,7 +7,7 @@ namespace Discord.Commands { public string Text { get; } public RunMode RunMode { get; set; } = RunMode.Default; - public bool? IgnoreExtraArgs { get; set; } + public bool? IgnoreExtraArgs { get; private set; } public CommandAttribute() { From 143fb2808bcf034a1cbb4231fc19424972a22ca4 Mon Sep 17 00:00:00 2001 From: JustNrik <35231903+JustNrik@users.noreply.github.com> Date: Mon, 27 Aug 2018 17:39:00 -0400 Subject: [PATCH 4/5] Update CommandAttribute.cs --- src/Discord.Net.Commands/Attributes/CommandAttribute.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Discord.Net.Commands/Attributes/CommandAttribute.cs b/src/Discord.Net.Commands/Attributes/CommandAttribute.cs index ac3ba599e..bfc04641a 100644 --- a/src/Discord.Net.Commands/Attributes/CommandAttribute.cs +++ b/src/Discord.Net.Commands/Attributes/CommandAttribute.cs @@ -7,7 +7,7 @@ namespace Discord.Commands { public string Text { get; } public RunMode RunMode { get; set; } = RunMode.Default; - public bool? IgnoreExtraArgs { get; private set; } + public bool? IgnoreExtraArgs { get; } public CommandAttribute() { From efdb4f926698bbf6ef2d93779291f7f39d675b3f Mon Sep 17 00:00:00 2001 From: Finite Reality Date: Wed, 29 Aug 2018 17:11:26 +0100 Subject: [PATCH 5/5] Pass our json serializer to ToObject calls (#1133) Should fix issues in audit logs when deserializing overwrites and similar types which we use a custom contract resolver for. --- .../API/Common/AuditLogOptions.cs | 2 +- src/Discord.Net.Rest/DiscordRestApiClient.cs | 22 +++++----- .../DataTypes/ChannelCreateAuditLogData.cs | 8 ++-- .../DataTypes/ChannelDeleteAuditLogData.cs | 6 +-- .../DataTypes/ChannelUpdateAuditLogData.cs | 16 ++++---- .../DataTypes/EmoteCreateAuditLogData.cs | 2 +- .../DataTypes/EmoteDeleteAuditLogData.cs | 2 +- .../DataTypes/EmoteUpdateAuditLogData.cs | 4 +- .../DataTypes/GuildUpdateAuditLogData.cs | 40 +++++++++---------- .../DataTypes/InviteCreateAuditLogData.cs | 14 +++---- .../DataTypes/InviteDeleteAuditLogData.cs | 14 +++---- .../DataTypes/InviteUpdateAuditLogData.cs | 20 +++++----- .../DataTypes/MemberRoleAuditLogData.cs | 2 +- .../DataTypes/MemberUpdateAuditLogData.cs | 16 ++++---- .../DataTypes/OverwriteCreateAuditLogData.cs | 8 ++-- .../DataTypes/OverwriteDeleteAuditLogData.cs | 12 +++--- .../DataTypes/OverwriteUpdateAuditLogData.cs | 12 +++--- .../DataTypes/RoleCreateAuditLogData.cs | 10 ++--- .../DataTypes/RoleDeleteAuditLogData.cs | 10 ++--- .../DataTypes/RoleUpdateAuditLogData.cs | 20 +++++----- .../DataTypes/WebhookCreateAuditLogData.cs | 6 +-- .../DataTypes/WebhookDeleteAuditLogData.cs | 8 ++-- .../DataTypes/WebhookUpdateAuditLogData.cs | 14 +++---- 23 files changed, 132 insertions(+), 136 deletions(-) diff --git a/src/Discord.Net.Rest/API/Common/AuditLogOptions.cs b/src/Discord.Net.Rest/API/Common/AuditLogOptions.cs index 65b401cce..24141d90c 100644 --- a/src/Discord.Net.Rest/API/Common/AuditLogOptions.cs +++ b/src/Discord.Net.Rest/API/Common/AuditLogOptions.cs @@ -20,7 +20,7 @@ namespace Discord.API [JsonProperty("role_name")] public string OverwriteRoleName { get; set; } [JsonProperty("type")] - public string OverwriteType { get; set; } + public PermissionTarget OverwriteType { get; set; } [JsonProperty("id")] public ulong? OverwriteTargetId { get; set; } } diff --git a/src/Discord.Net.Rest/DiscordRestApiClient.cs b/src/Discord.Net.Rest/DiscordRestApiClient.cs index 2236dbbf8..a9fc1ed74 100644 --- a/src/Discord.Net.Rest/DiscordRestApiClient.cs +++ b/src/Discord.Net.Rest/DiscordRestApiClient.cs @@ -43,9 +43,11 @@ namespace Discord.API public TokenType AuthTokenType { get; private set; } internal string AuthToken { get; private set; } internal IRestClient RestClient { get; private set; } - internal ulong? CurrentUserId { get; set;} + internal ulong? CurrentUserId { get; set; } - public DiscordRestApiClient(RestClientProvider restClientProvider, string userAgent, RetryMode defaultRetryMode = RetryMode.AlwaysRetry, + internal JsonSerializer Serializer => _serializer; + + public DiscordRestApiClient(RestClientProvider restClientProvider, string userAgent, RetryMode defaultRetryMode = RetryMode.AlwaysRetry, JsonSerializer serializer = null) { _restClientProvider = restClientProvider; @@ -235,7 +237,7 @@ namespace Discord.API internal Task SendMultipartAsync(string method, Expression> endpointExpr, IReadOnlyDictionary multipartArgs, BucketIds ids, ClientBucketType clientBucket = ClientBucketType.Unbucketed, RequestOptions options = null, [CallerMemberName] string funcName = null) => SendMultipartAsync(method, GetEndpoint(endpointExpr), multipartArgs, GetBucketId(ids, endpointExpr, AuthTokenType, funcName), clientBucket, options); - public async Task SendMultipartAsync(string method, string endpoint, IReadOnlyDictionary multipartArgs, + public async Task SendMultipartAsync(string method, string endpoint, IReadOnlyDictionary multipartArgs, string bucketId = null, ClientBucketType clientBucket = ClientBucketType.Unbucketed, RequestOptions options = null) { options = options ?? new RequestOptions(); @@ -414,7 +416,7 @@ namespace Discord.API var ids = new BucketIds(guildId: guildId); await SendAsync("DELETE", () => $"guilds/{guildId}/members/{userId}/roles/{roleId}", ids, options: options); } - + //Channel Messages public async Task GetChannelMessageAsync(ulong channelId, ulong messageId, RequestOptions options = null) { @@ -490,7 +492,7 @@ namespace Discord.API if (args.Content?.Length > DiscordConfig.MaxMessageSize) throw new ArgumentException($"Message content is too long, length must be less or equal to {DiscordConfig.MaxMessageSize}.", nameof(args.Content)); options = RequestOptions.CreateOrClone(options); - + return await SendJsonAsync("POST", () => $"webhooks/{webhookId}/{AuthToken}?wait=true", args, new BucketIds(), clientBucket: ClientBucketType.SendEdit, options: options).ConfigureAwait(false); } public async Task UploadFileAsync(ulong channelId, UploadFileParams args, RequestOptions options = null) @@ -737,7 +739,7 @@ namespace Discord.API Preconditions.NotNullOrWhitespace(args.Name, nameof(args.Name)); Preconditions.NotNullOrWhitespace(args.RegionId, nameof(args.RegionId)); options = RequestOptions.CreateOrClone(options); - + return await SendJsonAsync("POST", () => "guilds", args, new BucketIds(), options: options).ConfigureAwait(false); } public async Task DeleteGuildAsync(ulong guildId, RequestOptions options = null) @@ -964,7 +966,7 @@ namespace Discord.API { Preconditions.NotNullOrEmpty(inviteId, nameof(inviteId)); options = RequestOptions.CreateOrClone(options); - + return await SendAsync("DELETE", () => $"invites/{inviteId}", new BucketIds(), options: options).ConfigureAwait(false); } @@ -1163,7 +1165,7 @@ namespace Discord.API int limit = args.Limit.GetValueOrDefault(int.MaxValue); ulong afterGuildId = args.AfterGuildId.GetValueOrDefault(0); - + return await SendAsync>("GET", () => $"users/@me/guilds?limit={limit}&after={afterGuildId}", new BucketIds(), options: options).ConfigureAwait(false); } public async Task GetMyApplicationAsync(RequestOptions options = null) @@ -1263,7 +1265,7 @@ namespace Discord.API Preconditions.NotNull(args, nameof(args)); Preconditions.NotNullOrEmpty(args.Name, nameof(args.Name)); options = RequestOptions.CreateOrClone(options); - + if (AuthTokenType == TokenType.Webhook) return await SendJsonAsync("PATCH", () => $"webhooks/{webhookId}/{AuthToken}", args, new BucketIds(), options: options).ConfigureAwait(false); else @@ -1393,7 +1395,7 @@ namespace Discord.API int argId = int.Parse(format.Substring(leftIndex + 1, rightIndex - leftIndex - 1)); string fieldName = GetFieldName(methodArgs[argId + 1]); int? mappedId; - + mappedId = BucketIds.GetIndex(fieldName); if(!mappedId.HasValue && rightIndex != endIndex && format.Length > rightIndex + 1 && format[rightIndex + 1] == '/') //Ignore the next slash rightIndex++; diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ChannelCreateAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ChannelCreateAuditLogData.cs index ef4787295..51e72c414 100644 --- a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ChannelCreateAuditLogData.cs +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ChannelCreateAuditLogData.cs @@ -26,18 +26,16 @@ namespace Discord.Rest var typeModel = changes.FirstOrDefault(x => x.ChangedProperty == "type"); var nameModel = changes.FirstOrDefault(x => x.ChangedProperty == "name"); - var type = typeModel.NewValue.ToObject(); - var name = nameModel.NewValue.ToObject(); + var type = typeModel.NewValue.ToObject(discord.ApiClient.Serializer); + var name = nameModel.NewValue.ToObject(discord.ApiClient.Serializer); foreach (var overwrite in overwritesModel.NewValue) { var deny = overwrite.Value("deny"); - var _type = overwrite.Value("type"); + var permType = overwrite.Value("type"); var id = overwrite.Value("id"); var allow = overwrite.Value("allow"); - PermissionTarget permType = _type == "member" ? PermissionTarget.User : PermissionTarget.Role; - overwrites.Add(new Overwrite(id, permType, new OverwritePermissions(allow, deny))); } diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ChannelDeleteAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ChannelDeleteAuditLogData.cs index 4816ce770..7af5ca10c 100644 --- a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ChannelDeleteAuditLogData.cs +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ChannelDeleteAuditLogData.cs @@ -27,11 +27,11 @@ namespace Discord.Rest var typeModel = changes.FirstOrDefault(x => x.ChangedProperty == "type"); var nameModel = changes.FirstOrDefault(x => x.ChangedProperty == "name"); - var overwrites = overwritesModel.OldValue.ToObject() + var overwrites = overwritesModel.OldValue.ToObject(discord.ApiClient.Serializer) .Select(x => new Overwrite(x.TargetId, x.TargetType, new OverwritePermissions(x.Allow, x.Deny))) .ToList(); - var type = typeModel.OldValue.ToObject(); - var name = nameModel.OldValue.ToObject(); + var type = typeModel.OldValue.ToObject(discord.ApiClient.Serializer); + var name = nameModel.OldValue.ToObject(discord.ApiClient.Serializer); var id = entry.TargetId.Value; return new ChannelDeleteAuditLogData(id, name, type, overwrites.ToReadOnlyCollection()); diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ChannelUpdateAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ChannelUpdateAuditLogData.cs index 491cb5717..36fe82084 100644 --- a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ChannelUpdateAuditLogData.cs +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ChannelUpdateAuditLogData.cs @@ -23,14 +23,14 @@ namespace Discord.Rest var bitrateModel = changes.FirstOrDefault(x => x.ChangedProperty == "bitrate"); var userLimitModel = changes.FirstOrDefault(x => x.ChangedProperty == "user_limit"); - string oldName = nameModel?.OldValue?.ToObject(), - newName = nameModel?.NewValue?.ToObject(); - string oldTopic = topicModel?.OldValue?.ToObject(), - newTopic = topicModel?.NewValue?.ToObject(); - int? oldBitrate = bitrateModel?.OldValue?.ToObject(), - newBitrate = bitrateModel?.NewValue?.ToObject(); - int? oldLimit = userLimitModel?.OldValue?.ToObject(), - newLimit = userLimitModel?.NewValue?.ToObject(); + string oldName = nameModel?.OldValue?.ToObject(discord.ApiClient.Serializer), + newName = nameModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + string oldTopic = topicModel?.OldValue?.ToObject(discord.ApiClient.Serializer), + newTopic = topicModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + int? oldBitrate = bitrateModel?.OldValue?.ToObject(discord.ApiClient.Serializer), + newBitrate = bitrateModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + int? oldLimit = userLimitModel?.OldValue?.ToObject(discord.ApiClient.Serializer), + newLimit = userLimitModel?.NewValue?.ToObject(discord.ApiClient.Serializer); var before = new ChannelInfo(oldName, oldTopic, oldBitrate, oldLimit); var after = new ChannelInfo(newName, newTopic, newBitrate, newLimit); diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/EmoteCreateAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/EmoteCreateAuditLogData.cs index 5d1ef8463..dac2d90ef 100644 --- a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/EmoteCreateAuditLogData.cs +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/EmoteCreateAuditLogData.cs @@ -21,7 +21,7 @@ namespace Discord.Rest { var change = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "name"); - var emoteName = change.NewValue?.ToObject(); + var emoteName = change.NewValue?.ToObject(discord.ApiClient.Serializer); return new EmoteCreateAuditLogData(entry.TargetId.Value, emoteName); } diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/EmoteDeleteAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/EmoteDeleteAuditLogData.cs index d0a11191f..73cb31af9 100644 --- a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/EmoteDeleteAuditLogData.cs +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/EmoteDeleteAuditLogData.cs @@ -17,7 +17,7 @@ namespace Discord.Rest { var change = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "name"); - var emoteName = change.OldValue?.ToObject(); + var emoteName = change.OldValue?.ToObject(discord.ApiClient.Serializer); return new EmoteDeleteAuditLogData(entry.TargetId.Value, emoteName); } diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/EmoteUpdateAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/EmoteUpdateAuditLogData.cs index 60020bcaa..84898013d 100644 --- a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/EmoteUpdateAuditLogData.cs +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/EmoteUpdateAuditLogData.cs @@ -18,8 +18,8 @@ namespace Discord.Rest { var change = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "name"); - var newName = change.NewValue?.ToObject(); - var oldName = change.OldValue?.ToObject(); + var newName = change.NewValue?.ToObject(discord.ApiClient.Serializer); + var oldName = change.OldValue?.ToObject(discord.ApiClient.Serializer); return new EmoteUpdateAuditLogData(entry.TargetId.Value, oldName, newName); } diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/GuildUpdateAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/GuildUpdateAuditLogData.cs index 08550ed7a..09c1eda18 100644 --- a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/GuildUpdateAuditLogData.cs +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/GuildUpdateAuditLogData.cs @@ -28,26 +28,26 @@ namespace Discord.Rest var mfaLevelModel = changes.FirstOrDefault(x => x.ChangedProperty == "afk_timeout"); var contentFilterModel = changes.FirstOrDefault(x => x.ChangedProperty == "afk_timeout"); - int? oldAfkTimeout = afkTimeoutModel?.OldValue?.ToObject(), - newAfkTimeout = afkTimeoutModel?.NewValue?.ToObject(); - DefaultMessageNotifications? oldDefaultMessageNotifications = defaultMessageNotificationsModel?.OldValue?.ToObject(), - newDefaultMessageNotifications = defaultMessageNotificationsModel?.NewValue?.ToObject(); - ulong? oldAfkChannelId = afkChannelModel?.OldValue?.ToObject(), - newAfkChannelId = afkChannelModel?.NewValue?.ToObject(); - string oldName = nameModel?.OldValue?.ToObject(), - newName = nameModel?.NewValue?.ToObject(); - string oldRegionId = regionIdModel?.OldValue?.ToObject(), - newRegionId = regionIdModel?.NewValue?.ToObject(); - string oldIconHash = iconHashModel?.OldValue?.ToObject(), - newIconHash = iconHashModel?.NewValue?.ToObject(); - VerificationLevel? oldVerificationLevel = verificationLevelModel?.OldValue?.ToObject(), - newVerificationLevel = verificationLevelModel?.NewValue?.ToObject(); - ulong? oldOwnerId = ownerIdModel?.OldValue?.ToObject(), - newOwnerId = ownerIdModel?.NewValue?.ToObject(); - MfaLevel? oldMfaLevel = mfaLevelModel?.OldValue?.ToObject(), - newMfaLevel = mfaLevelModel?.NewValue?.ToObject(); - int? oldContentFilter = contentFilterModel?.OldValue?.ToObject(), - newContentFilter = contentFilterModel?.NewValue?.ToObject(); + int? oldAfkTimeout = afkTimeoutModel?.OldValue?.ToObject(discord.ApiClient.Serializer), + newAfkTimeout = afkTimeoutModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + DefaultMessageNotifications? oldDefaultMessageNotifications = defaultMessageNotificationsModel?.OldValue?.ToObject(discord.ApiClient.Serializer), + newDefaultMessageNotifications = defaultMessageNotificationsModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + ulong? oldAfkChannelId = afkChannelModel?.OldValue?.ToObject(discord.ApiClient.Serializer), + newAfkChannelId = afkChannelModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + string oldName = nameModel?.OldValue?.ToObject(discord.ApiClient.Serializer), + newName = nameModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + string oldRegionId = regionIdModel?.OldValue?.ToObject(discord.ApiClient.Serializer), + newRegionId = regionIdModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + string oldIconHash = iconHashModel?.OldValue?.ToObject(discord.ApiClient.Serializer), + newIconHash = iconHashModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + VerificationLevel? oldVerificationLevel = verificationLevelModel?.OldValue?.ToObject(discord.ApiClient.Serializer), + newVerificationLevel = verificationLevelModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + ulong? oldOwnerId = ownerIdModel?.OldValue?.ToObject(discord.ApiClient.Serializer), + newOwnerId = ownerIdModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + MfaLevel? oldMfaLevel = mfaLevelModel?.OldValue?.ToObject(discord.ApiClient.Serializer), + newMfaLevel = mfaLevelModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + int? oldContentFilter = contentFilterModel?.OldValue?.ToObject(discord.ApiClient.Serializer), + newContentFilter = contentFilterModel?.NewValue?.ToObject(discord.ApiClient.Serializer); IUser oldOwner = null; if (oldOwnerId != null) diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/InviteCreateAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/InviteCreateAuditLogData.cs index 292715420..1d7f48e93 100644 --- a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/InviteCreateAuditLogData.cs +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/InviteCreateAuditLogData.cs @@ -30,13 +30,13 @@ namespace Discord.Rest var usesModel = changes.FirstOrDefault(x => x.ChangedProperty == "uses"); var maxUsesModel = changes.FirstOrDefault(x => x.ChangedProperty == "max_uses"); - var maxAge = maxAgeModel.NewValue.ToObject(); - var code = codeModel.NewValue.ToObject(); - var temporary = temporaryModel.NewValue.ToObject(); - var inviterId = inviterIdModel.NewValue.ToObject(); - var channelId = channelIdModel.NewValue.ToObject(); - var uses = usesModel.NewValue.ToObject(); - var maxUses = maxUsesModel.NewValue.ToObject(); + var maxAge = maxAgeModel.NewValue.ToObject(discord.ApiClient.Serializer); + var code = codeModel.NewValue.ToObject(discord.ApiClient.Serializer); + var temporary = temporaryModel.NewValue.ToObject(discord.ApiClient.Serializer); + var inviterId = inviterIdModel.NewValue.ToObject(discord.ApiClient.Serializer); + var channelId = channelIdModel.NewValue.ToObject(discord.ApiClient.Serializer); + var uses = usesModel.NewValue.ToObject(discord.ApiClient.Serializer); + var maxUses = maxUsesModel.NewValue.ToObject(discord.ApiClient.Serializer); var inviterInfo = log.Users.FirstOrDefault(x => x.Id == inviterId); var inviter = RestUser.Create(discord, inviterInfo); diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/InviteDeleteAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/InviteDeleteAuditLogData.cs index 1dc6d518b..091285532 100644 --- a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/InviteDeleteAuditLogData.cs +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/InviteDeleteAuditLogData.cs @@ -30,13 +30,13 @@ namespace Discord.Rest var usesModel = changes.FirstOrDefault(x => x.ChangedProperty == "uses"); var maxUsesModel = changes.FirstOrDefault(x => x.ChangedProperty == "max_uses"); - var maxAge = maxAgeModel.OldValue.ToObject(); - var code = codeModel.OldValue.ToObject(); - var temporary = temporaryModel.OldValue.ToObject(); - var inviterId = inviterIdModel.OldValue.ToObject(); - var channelId = channelIdModel.OldValue.ToObject(); - var uses = usesModel.OldValue.ToObject(); - var maxUses = maxUsesModel.OldValue.ToObject(); + var maxAge = maxAgeModel.OldValue.ToObject(discord.ApiClient.Serializer); + var code = codeModel.OldValue.ToObject(discord.ApiClient.Serializer); + var temporary = temporaryModel.OldValue.ToObject(discord.ApiClient.Serializer); + var inviterId = inviterIdModel.OldValue.ToObject(discord.ApiClient.Serializer); + var channelId = channelIdModel.OldValue.ToObject(discord.ApiClient.Serializer); + var uses = usesModel.OldValue.ToObject(discord.ApiClient.Serializer); + var maxUses = maxUsesModel.OldValue.ToObject(discord.ApiClient.Serializer); var inviterInfo = log.Users.FirstOrDefault(x => x.Id == inviterId); var inviter = RestUser.Create(discord, inviterInfo); diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/InviteUpdateAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/InviteUpdateAuditLogData.cs index b932cfbfc..35088be98 100644 --- a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/InviteUpdateAuditLogData.cs +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/InviteUpdateAuditLogData.cs @@ -23,16 +23,16 @@ namespace Discord.Rest var channelIdModel = changes.FirstOrDefault(x => x.ChangedProperty == "channel_id"); var maxUsesModel = changes.FirstOrDefault(x => x.ChangedProperty == "max_uses"); - int? oldMaxAge = maxAgeModel?.OldValue?.ToObject(), - newMaxAge = maxAgeModel?.NewValue?.ToObject(); - string oldCode = codeModel?.OldValue?.ToObject(), - newCode = codeModel?.NewValue?.ToObject(); - bool? oldTemporary = temporaryModel?.OldValue?.ToObject(), - newTemporary = temporaryModel?.NewValue?.ToObject(); - ulong? oldChannelId = channelIdModel?.OldValue?.ToObject(), - newChannelId = channelIdModel?.NewValue?.ToObject(); - int? oldMaxUses = maxUsesModel?.OldValue?.ToObject(), - newMaxUses = maxUsesModel?.NewValue?.ToObject(); + int? oldMaxAge = maxAgeModel?.OldValue?.ToObject(discord.ApiClient.Serializer), + newMaxAge = maxAgeModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + string oldCode = codeModel?.OldValue?.ToObject(discord.ApiClient.Serializer), + newCode = codeModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + bool? oldTemporary = temporaryModel?.OldValue?.ToObject(discord.ApiClient.Serializer), + newTemporary = temporaryModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + ulong? oldChannelId = channelIdModel?.OldValue?.ToObject(discord.ApiClient.Serializer), + newChannelId = channelIdModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + int? oldMaxUses = maxUsesModel?.OldValue?.ToObject(discord.ApiClient.Serializer), + newMaxUses = maxUsesModel?.NewValue?.ToObject(discord.ApiClient.Serializer); var before = new InviteInfo(oldMaxAge, oldCode, oldTemporary, oldChannelId, oldMaxUses); var after = new InviteInfo(newMaxAge, newCode, newTemporary, newChannelId, newMaxUses); diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MemberRoleAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MemberRoleAuditLogData.cs index 3bcbce440..48adb1833 100644 --- a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MemberRoleAuditLogData.cs +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MemberRoleAuditLogData.cs @@ -19,7 +19,7 @@ namespace Discord.Rest { var changes = entry.Changes; - var roleInfos = changes.SelectMany(x => x.NewValue.ToObject(), + var roleInfos = changes.SelectMany(x => x.NewValue.ToObject(discord.ApiClient.Serializer), (model, role) => new { model.ChangedProperty, Role = role }) .Select(x => new MemberRoleEditInfo(x.Role.Name, x.Role.Id, x.ChangedProperty == "$add")) .ToList(); diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MemberUpdateAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MemberUpdateAuditLogData.cs index 40a3ba681..96d34610e 100644 --- a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MemberUpdateAuditLogData.cs +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MemberUpdateAuditLogData.cs @@ -24,14 +24,14 @@ namespace Discord.Rest var muteModel = changes.FirstOrDefault(x => x.ChangedProperty == "mute"); var avatarModel = changes.FirstOrDefault(x => x.ChangedProperty == "avatar_hash"); - string oldNick = nickModel?.OldValue?.ToObject(), - newNick = nickModel?.NewValue?.ToObject(); - bool? oldDeaf = deafModel?.OldValue?.ToObject(), - newDeaf = deafModel?.NewValue?.ToObject(); - bool? oldMute = muteModel?.OldValue?.ToObject(), - newMute = muteModel?.NewValue?.ToObject(); - string oldAvatar = avatarModel?.OldValue?.ToObject(), - newAvatar = avatarModel?.NewValue?.ToObject(); + string oldNick = nickModel?.OldValue?.ToObject(discord.ApiClient.Serializer), + newNick = nickModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + bool? oldDeaf = deafModel?.OldValue?.ToObject(discord.ApiClient.Serializer), + newDeaf = deafModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + bool? oldMute = muteModel?.OldValue?.ToObject(discord.ApiClient.Serializer), + newMute = muteModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + string oldAvatar = avatarModel?.OldValue?.ToObject(discord.ApiClient.Serializer), + newAvatar = avatarModel?.NewValue?.ToObject(discord.ApiClient.Serializer); var targetInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId); var user = RestUser.Create(discord, targetInfo); diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/OverwriteCreateAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/OverwriteCreateAuditLogData.cs index d58488136..b13f4b8fd 100644 --- a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/OverwriteCreateAuditLogData.cs +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/OverwriteCreateAuditLogData.cs @@ -19,17 +19,15 @@ namespace Discord.Rest var denyModel = changes.FirstOrDefault(x => x.ChangedProperty == "deny"); var allowModel = changes.FirstOrDefault(x => x.ChangedProperty == "allow"); - var deny = denyModel.NewValue.ToObject(); - var allow = allowModel.NewValue.ToObject(); + var deny = denyModel.NewValue.ToObject(discord.ApiClient.Serializer); + var allow = allowModel.NewValue.ToObject(discord.ApiClient.Serializer); var permissions = new OverwritePermissions(allow, deny); var id = entry.Options.OverwriteTargetId.Value; var type = entry.Options.OverwriteType; - PermissionTarget target = type == "member" ? PermissionTarget.User : PermissionTarget.Role; - - return new OverwriteCreateAuditLogData(new Overwrite(id, target, permissions)); + return new OverwriteCreateAuditLogData(new Overwrite(id, type, permissions)); } public Overwrite Overwrite { get; } diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/OverwriteDeleteAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/OverwriteDeleteAuditLogData.cs index 445c2e302..5d5177d9a 100644 --- a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/OverwriteDeleteAuditLogData.cs +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/OverwriteDeleteAuditLogData.cs @@ -27,14 +27,12 @@ namespace Discord.Rest var idModel = changes.FirstOrDefault(x => x.ChangedProperty == "id"); var allowModel = changes.FirstOrDefault(x => x.ChangedProperty == "allow"); - var deny = denyModel.OldValue.ToObject(); - var type = typeModel.OldValue.ToObject(); - var id = idModel.OldValue.ToObject(); - var allow = allowModel.OldValue.ToObject(); + var deny = denyModel.OldValue.ToObject(discord.ApiClient.Serializer); + var type = typeModel.OldValue.ToObject(discord.ApiClient.Serializer); + var id = idModel.OldValue.ToObject(discord.ApiClient.Serializer); + var allow = allowModel.OldValue.ToObject(discord.ApiClient.Serializer); - PermissionTarget target = type == "member" ? PermissionTarget.User : PermissionTarget.Role; - - return new OverwriteDeleteAuditLogData(new Overwrite(id, target, new OverwritePermissions(allow, deny))); + return new OverwriteDeleteAuditLogData(new Overwrite(id, type, new OverwritePermissions(allow, deny))); } public Overwrite Overwrite { get; } diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/OverwriteUpdateAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/OverwriteUpdateAuditLogData.cs index d000146c3..d05e1feff 100644 --- a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/OverwriteUpdateAuditLogData.cs +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/OverwriteUpdateAuditLogData.cs @@ -22,17 +22,17 @@ namespace Discord.Rest var denyModel = changes.FirstOrDefault(x => x.ChangedProperty == "deny"); var allowModel = changes.FirstOrDefault(x => x.ChangedProperty == "allow"); - var beforeAllow = allowModel?.OldValue?.ToObject(); - var afterAllow = allowModel?.NewValue?.ToObject(); - var beforeDeny = denyModel?.OldValue?.ToObject(); - var afterDeny = denyModel?.OldValue?.ToObject(); + var beforeAllow = allowModel?.OldValue?.ToObject(discord.ApiClient.Serializer); + var afterAllow = allowModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + var beforeDeny = denyModel?.OldValue?.ToObject(discord.ApiClient.Serializer); + var afterDeny = denyModel?.OldValue?.ToObject(discord.ApiClient.Serializer); var beforePermissions = new OverwritePermissions(beforeAllow ?? 0, beforeDeny ?? 0); var afterPermissions = new OverwritePermissions(afterAllow ?? 0, afterDeny ?? 0); - PermissionTarget target = entry.Options.OverwriteType == "member" ? PermissionTarget.User : PermissionTarget.Role; + var type = entry.Options.OverwriteType; - return new OverwriteUpdateAuditLogData(beforePermissions, afterPermissions, entry.Options.OverwriteTargetId.Value, target); + return new OverwriteUpdateAuditLogData(beforePermissions, afterPermissions, entry.Options.OverwriteTargetId.Value, type); } public OverwritePermissions OldPermissions { get; } diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/RoleCreateAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/RoleCreateAuditLogData.cs index dcc1c6ab6..69e72fdb0 100644 --- a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/RoleCreateAuditLogData.cs +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/RoleCreateAuditLogData.cs @@ -23,11 +23,11 @@ namespace Discord.Rest var nameModel = changes.FirstOrDefault(x => x.ChangedProperty == "name"); var permissionsModel = changes.FirstOrDefault(x => x.ChangedProperty == "permissions"); - uint? colorRaw = colorModel?.NewValue?.ToObject(); - bool? mentionable = mentionableModel?.NewValue?.ToObject(); - bool? hoist = hoistModel?.NewValue?.ToObject(); - string name = nameModel?.NewValue?.ToObject(); - ulong? permissionsRaw = permissionsModel?.NewValue?.ToObject(); + uint? colorRaw = colorModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + bool? mentionable = mentionableModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + bool? hoist = hoistModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + string name = nameModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + ulong? permissionsRaw = permissionsModel?.NewValue?.ToObject(discord.ApiClient.Serializer); Color? color = null; GuildPermissions? permissions = null; diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/RoleDeleteAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/RoleDeleteAuditLogData.cs index 263909daf..f812567cb 100644 --- a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/RoleDeleteAuditLogData.cs +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/RoleDeleteAuditLogData.cs @@ -23,11 +23,11 @@ namespace Discord.Rest var nameModel = changes.FirstOrDefault(x => x.ChangedProperty == "name"); var permissionsModel = changes.FirstOrDefault(x => x.ChangedProperty == "permissions"); - uint? colorRaw = colorModel?.OldValue?.ToObject(); - bool? mentionable = mentionableModel?.OldValue?.ToObject(); - bool? hoist = hoistModel?.OldValue?.ToObject(); - string name = nameModel?.OldValue?.ToObject(); - ulong? permissionsRaw = permissionsModel?.OldValue?.ToObject(); + uint? colorRaw = colorModel?.OldValue?.ToObject(discord.ApiClient.Serializer); + bool? mentionable = mentionableModel?.OldValue?.ToObject(discord.ApiClient.Serializer); + bool? hoist = hoistModel?.OldValue?.ToObject(discord.ApiClient.Serializer); + string name = nameModel?.OldValue?.ToObject(discord.ApiClient.Serializer); + ulong? permissionsRaw = permissionsModel?.OldValue?.ToObject(discord.ApiClient.Serializer); Color? color = null; GuildPermissions? permissions = null; diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/RoleUpdateAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/RoleUpdateAuditLogData.cs index b645ef7ae..5cea865f1 100644 --- a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/RoleUpdateAuditLogData.cs +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/RoleUpdateAuditLogData.cs @@ -24,16 +24,16 @@ namespace Discord.Rest var nameModel = changes.FirstOrDefault(x => x.ChangedProperty == "name"); var permissionsModel = changes.FirstOrDefault(x => x.ChangedProperty == "permissions"); - uint? oldColorRaw = colorModel?.OldValue?.ToObject(), - newColorRaw = colorModel?.NewValue?.ToObject(); - bool? oldMentionable = mentionableModel?.OldValue?.ToObject(), - newMentionable = mentionableModel?.NewValue?.ToObject(); - bool? oldHoist = hoistModel?.OldValue?.ToObject(), - newHoist = hoistModel?.NewValue?.ToObject(); - string oldName = nameModel?.OldValue?.ToObject(), - newName = nameModel?.NewValue?.ToObject(); - ulong? oldPermissionsRaw = permissionsModel?.OldValue?.ToObject(), - newPermissionsRaw = permissionsModel?.OldValue?.ToObject(); + uint? oldColorRaw = colorModel?.OldValue?.ToObject(discord.ApiClient.Serializer), + newColorRaw = colorModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + bool? oldMentionable = mentionableModel?.OldValue?.ToObject(discord.ApiClient.Serializer), + newMentionable = mentionableModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + bool? oldHoist = hoistModel?.OldValue?.ToObject(discord.ApiClient.Serializer), + newHoist = hoistModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + string oldName = nameModel?.OldValue?.ToObject(discord.ApiClient.Serializer), + newName = nameModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + ulong? oldPermissionsRaw = permissionsModel?.OldValue?.ToObject(discord.ApiClient.Serializer), + newPermissionsRaw = permissionsModel?.OldValue?.ToObject(discord.ApiClient.Serializer); Color? oldColor = null, newColor = null; diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/WebhookCreateAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/WebhookCreateAuditLogData.cs index 1ae45fb8c..06932bfc4 100644 --- a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/WebhookCreateAuditLogData.cs +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/WebhookCreateAuditLogData.cs @@ -23,9 +23,9 @@ namespace Discord.Rest var typeModel = changes.FirstOrDefault(x => x.ChangedProperty == "type"); var nameModel = changes.FirstOrDefault(x => x.ChangedProperty == "name"); - var channelId = channelIdModel.NewValue.ToObject(); - var type = typeModel.NewValue.ToObject(); - var name = nameModel.NewValue.ToObject(); + var channelId = channelIdModel.NewValue.ToObject(discord.ApiClient.Serializer); + var type = typeModel.NewValue.ToObject(discord.ApiClient.Serializer); + var name = nameModel.NewValue.ToObject(discord.ApiClient.Serializer); var webhookInfo = log.Webhooks?.FirstOrDefault(x => x.Id == entry.TargetId); var webhook = RestWebhook.Create(discord, (IGuild)null, webhookInfo); diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/WebhookDeleteAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/WebhookDeleteAuditLogData.cs index 4133d5dff..8fc4da578 100644 --- a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/WebhookDeleteAuditLogData.cs +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/WebhookDeleteAuditLogData.cs @@ -29,10 +29,10 @@ namespace Discord.Rest var nameModel = changes.FirstOrDefault(x => x.ChangedProperty == "name"); var avatarHashModel = changes.FirstOrDefault(x => x.ChangedProperty == "avatar_hash"); - var channelId = channelIdModel.OldValue.ToObject(); - var type = typeModel.OldValue.ToObject(); - var name = nameModel.OldValue.ToObject(); - var avatarHash = avatarHashModel?.OldValue?.ToObject(); + var channelId = channelIdModel.OldValue.ToObject(discord.ApiClient.Serializer); + var type = typeModel.OldValue.ToObject(discord.ApiClient.Serializer); + var name = nameModel.OldValue.ToObject(discord.ApiClient.Serializer); + var avatarHash = avatarHashModel?.OldValue?.ToObject(discord.ApiClient.Serializer); return new WebhookDeleteAuditLogData(entry.TargetId.Value, channelId, type, name, avatarHash); } diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/WebhookUpdateAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/WebhookUpdateAuditLogData.cs index 54da42a8b..ad7db53e2 100644 --- a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/WebhookUpdateAuditLogData.cs +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/WebhookUpdateAuditLogData.cs @@ -26,18 +26,18 @@ namespace Discord.Rest var channelIdModel = changes.FirstOrDefault(x => x.ChangedProperty == "channel_id"); var avatarHashModel = changes.FirstOrDefault(x => x.ChangedProperty == "avatar_hash"); - var oldName = nameModel?.OldValue?.ToObject(); - var oldChannelId = channelIdModel?.OldValue?.ToObject(); - var oldAvatar = avatarHashModel?.OldValue?.ToObject(); + var oldName = nameModel?.OldValue?.ToObject(discord.ApiClient.Serializer); + var oldChannelId = channelIdModel?.OldValue?.ToObject(discord.ApiClient.Serializer); + var oldAvatar = avatarHashModel?.OldValue?.ToObject(discord.ApiClient.Serializer); var before = new WebhookInfo(oldName, oldChannelId, oldAvatar); - var newName = nameModel?.NewValue?.ToObject(); - var newChannelId = channelIdModel?.NewValue?.ToObject(); - var newAvatar = avatarHashModel?.NewValue?.ToObject(); + var newName = nameModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + var newChannelId = channelIdModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + var newAvatar = avatarHashModel?.NewValue?.ToObject(discord.ApiClient.Serializer); var after = new WebhookInfo(newName, newChannelId, newAvatar); var webhookInfo = log.Webhooks?.FirstOrDefault(x => x.Id == entry.TargetId); - var webhook = RestWebhook.Create(discord, (IGuild)null, webhookInfo); + var webhook = webhookInfo != null ? RestWebhook.Create(discord, (IGuild)null, webhookInfo) : null; return new WebhookUpdateAuditLogData(webhook, before, after); }