diff --git a/discord/entitlement.go b/discord/entitlement.go index 756aad76..61fe22d2 100644 --- a/discord/entitlement.go +++ b/discord/entitlement.go @@ -16,12 +16,20 @@ type Entitlement struct { StartsAt *time.Time `json:"starts_at"` EndsAt *time.Time `json:"ends_at"` GuildID *snowflake.ID `json:"guild_id"` + Consumed *bool `json:"consumed"` } type EntitlementType int const ( - EntitlementTypeApplicationSubscription EntitlementType = 8 + EntitlementTypePurchase EntitlementType = iota + 1 + EntitlementTypePremiumSubscription + EntitlementTypeDeveloperGift + EntitlementTypeTestModePurchase + EntitlementTypeFreePurchase + EntitlementTypeUserGift + EntitlementTypePremiumPurchase + EntitlementTypeApplicationSubscription ) type TestEntitlementCreate struct { diff --git a/discord/sku.go b/discord/sku.go index 6e3858e6..4e34ea19 100644 --- a/discord/sku.go +++ b/discord/sku.go @@ -24,7 +24,10 @@ type SKU struct { type SKUType int const ( - SKUTypeSubscription SKUType = iota + 5 + SKUTypeDurable SKUType = iota + 2 + SKUTypeConsumable + _ + SKUTypeSubscription SKUTypeSubscriptionGroup ) diff --git a/rest/applications.go b/rest/applications.go index cb46bc91..b90a14ad 100644 --- a/rest/applications.go +++ b/rest/applications.go @@ -40,6 +40,7 @@ type Applications interface { GetEntitlements(applicationID snowflake.ID, userID snowflake.ID, guildID snowflake.ID, before snowflake.ID, after snowflake.ID, limit int, excludeEnded bool, skuIDs []snowflake.ID, opts ...RequestOpt) ([]discord.Entitlement, error) CreateTestEntitlement(applicationID snowflake.ID, entitlementCreate discord.TestEntitlementCreate, opts ...RequestOpt) (*discord.Entitlement, error) DeleteTestEntitlement(applicationID snowflake.ID, entitlementID snowflake.ID, opts ...RequestOpt) error + ConsumeEntitlement(applicationID snowflake.ID, entitlementID snowflake.ID, opts ...RequestOpt) error GetSKUs(applicationID snowflake.ID, opts ...RequestOpt) ([]discord.SKU, error) } @@ -209,6 +210,10 @@ func (s *applicationsImpl) DeleteTestEntitlement(applicationID snowflake.ID, ent return s.client.Do(DeleteTestEntitlement.Compile(nil, applicationID, entitlementID), nil, nil, opts...) } +func (s *applicationsImpl) ConsumeEntitlement(applicationID snowflake.ID, entitlementID snowflake.ID, opts ...RequestOpt) error { + return s.client.Do(ConsumeEntitlement.Compile(nil, applicationID, entitlementID), nil, nil, opts...) +} + func (s *applicationsImpl) GetSKUs(applicationID snowflake.ID, opts ...RequestOpt) (skus []discord.SKU, err error) { err = s.client.Do(GetSKUs.Compile(nil, applicationID), nil, &skus, opts...) return diff --git a/rest/rest_endpoints.go b/rest/rest_endpoints.go index 5cb758ba..329bfe05 100644 --- a/rest/rest_endpoints.go +++ b/rest/rest_endpoints.go @@ -300,6 +300,7 @@ var ( GetEntitlements = NewEndpoint(http.MethodGet, "/applications/{application.id}/entitlements") CreateTestEntitlement = NewEndpoint(http.MethodPost, "/applications/{application.id}/entitlements") DeleteTestEntitlement = NewEndpoint(http.MethodDelete, "/applications/{application.id}/entitlements/{entitlement.id}") + ConsumeEntitlement = NewEndpoint(http.MethodPost, "/applications/{application.id}/entitlements/{entitlement.id}/consume") GetSKUs = NewEndpoint(http.MethodGet, "/applications/{application.id}/skus") )