Skip to content

Commit bb623d3

Browse files
committed
feat: move logic to EntitlementManager
1 parent 0de148d commit bb623d3

File tree

4 files changed

+17
-2
lines changed

4 files changed

+17
-2
lines changed

packages/discord.js/src/managers/EntitlementManager.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,19 @@ class EntitlementManager extends CachedManager {
124124

125125
await this.client.rest.delete(Routes.entitlement(this.client.application.id, resolved));
126126
}
127+
128+
/**
129+
* Marks an entitlement as consumed
130+
* <info>Only available for One-Time Purchase consumable SKUs.</info>
131+
* @param {EntitlementResolvable} entitlement The entitlement to consume
132+
* @returns {Promise<void>}
133+
*/
134+
async consume(entitlement) {
135+
const resolved = this.resolveId(entitlement);
136+
if (!resolved) throw new DiscordjsTypeError(ErrorCodes.InvalidType, 'entitlement', 'EntitlementResolvable');
137+
138+
await this.client.rest.post(Routes.consumeEntitlement(this.client.application.id, resolved));
139+
}
127140
}
128141

129142
exports.EntitlementManager = EntitlementManager;

packages/discord.js/src/structures/Entitlement.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
'use strict';
22

3-
const { Routes } = require('discord-api-types/v10');
43
const Base = require('./Base');
54

65
/**
@@ -177,7 +176,7 @@ class Entitlement extends Base {
177176
* @returns {Promise<void>}
178177
*/
179178
async consume() {
180-
await this.client.rest.post(Routes.consumeEntitlement(this.applicationId, this.id));
179+
await this.client.application.entitlements.consume(this);
181180
}
182181
}
183182

packages/discord.js/typings/index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4143,6 +4143,7 @@ export class EntitlementManager extends CachedManager<Snowflake, Entitlement, En
41434143
public fetch(options?: FetchEntitlementsOptions): Promise<Collection<Snowflake, Entitlement>>;
41444144
public createTest(options: GuildEntitlementCreateOptions | UserEntitlementCreateOptions): Promise<Entitlement>;
41454145
public deleteTest(entitlement: EntitlementResolvable): Promise<void>;
4146+
public consume(entitlement: EntitlementResolvable): Promise<void>;
41464147
}
41474148

41484149
export interface FetchGuildApplicationCommandFetchOptions extends Omit<FetchApplicationCommandOptions, 'guildId'> {}

packages/discord.js/typings/index.test-d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2494,6 +2494,8 @@ declare const sku: SKU;
24942494

24952495
await application.entitlements.deleteTest(entitlement);
24962496

2497+
await application.entitlements.consume(entitlement);
2498+
24972499
expectType<boolean>(entitlement.isActive());
24982500

24992501
if (entitlement.isUserSubscription()) {

0 commit comments

Comments
 (0)