From 79fade6762add252dc08d68fa16566e27d7a3ab7 Mon Sep 17 00:00:00 2001 From: Mihail Gribkov <61027276+Misha-133@users.noreply.github.com> Date: Fri, 13 Dec 2024 03:10:59 +0800 Subject: [PATCH] [Feature] Support for multiple subscription tiers (#3036) --- .../Entities/AppSubscriptions/ISubscription.cs | 5 +++++ src/Discord.Net.Rest/API/Common/Subscription.cs | 3 +++ .../Entities/AppSubscriptions/RestSubscription.cs | 4 ++++ .../Entities/AppSubscriptions/SocketSubscription.cs | 4 ++++ 4 files changed, 16 insertions(+) diff --git a/src/Discord.Net.Core/Entities/AppSubscriptions/ISubscription.cs b/src/Discord.Net.Core/Entities/AppSubscriptions/ISubscription.cs index 06118fd6..5d86d71f 100644 --- a/src/Discord.Net.Core/Entities/AppSubscriptions/ISubscription.cs +++ b/src/Discord.Net.Core/Entities/AppSubscriptions/ISubscription.cs @@ -23,6 +23,11 @@ public interface ISubscription : ISnowflakeEntity /// IReadOnlyCollection EntitlementIds { get; } + /// + /// Gets the SKUs that this user will be subscribed to at renewal. + /// + IReadOnlyCollection RenewalSKUIds { get; } + /// /// Gets the start of the current subscription period. /// diff --git a/src/Discord.Net.Rest/API/Common/Subscription.cs b/src/Discord.Net.Rest/API/Common/Subscription.cs index cbcb1b07..baeeadb9 100644 --- a/src/Discord.Net.Rest/API/Common/Subscription.cs +++ b/src/Discord.Net.Rest/API/Common/Subscription.cs @@ -17,6 +17,9 @@ internal class Subscription [JsonProperty("entitlement_ids")] public ulong[] EntitlementIds { get; set; } + [JsonProperty("renewal_sku_ids")] + public ulong[] RenewalSKUIds { get; set; } + [JsonProperty("current_period_start")] public DateTimeOffset CurrentPeriodStart { get; set; } diff --git a/src/Discord.Net.Rest/Entities/AppSubscriptions/RestSubscription.cs b/src/Discord.Net.Rest/Entities/AppSubscriptions/RestSubscription.cs index afae876c..dbd897f9 100644 --- a/src/Discord.Net.Rest/Entities/AppSubscriptions/RestSubscription.cs +++ b/src/Discord.Net.Rest/Entities/AppSubscriptions/RestSubscription.cs @@ -21,6 +21,9 @@ public class RestSubscription : RestEntity, ISubscription /// public IReadOnlyCollection EntitlementIds { get; private set; } + /// + public IReadOnlyCollection RenewalSKUIds { get; private set; } + /// public DateTimeOffset CurrentPeriodStart { get; private set; } @@ -52,6 +55,7 @@ public class RestSubscription : RestEntity, ISubscription UserId = model.UserId; SKUIds = model.SKUIds.ToImmutableArray(); EntitlementIds = model.EntitlementIds.ToImmutableArray(); + RenewalSKUIds = model.RenewalSKUIds?.ToImmutableArray() ?? []; CurrentPeriodStart = model.CurrentPeriodStart; CurrentPeriodEnd = model.CurrentPeriodEnd; Status = model.Status; diff --git a/src/Discord.Net.WebSocket/Entities/AppSubscriptions/SocketSubscription.cs b/src/Discord.Net.WebSocket/Entities/AppSubscriptions/SocketSubscription.cs index f7b4445a..f6c2e603 100644 --- a/src/Discord.Net.WebSocket/Entities/AppSubscriptions/SocketSubscription.cs +++ b/src/Discord.Net.WebSocket/Entities/AppSubscriptions/SocketSubscription.cs @@ -21,6 +21,9 @@ public class SocketSubscription : SocketEntity, ISubscription /// public IReadOnlyCollection EntitlementIds { get; private set; } + /// + public IReadOnlyCollection RenewalSKUIds { get; private set; } + /// public DateTimeOffset CurrentPeriodStart { get; private set; } @@ -52,6 +55,7 @@ public class SocketSubscription : SocketEntity, ISubscription UserId = model.UserId; SKUIds = model.SKUIds.ToImmutableArray(); EntitlementIds = model.EntitlementIds.ToImmutableArray(); + RenewalSKUIds = model.RenewalSKUIds?.ToImmutableArray() ?? []; CurrentPeriodStart = model.CurrentPeriodStart; CurrentPeriodEnd = model.CurrentPeriodEnd; Status = model.Status;