From 6304c0177e48a9635f0807f35a0a07c959742eec Mon Sep 17 00:00:00 2001 From: Naiyar <137700126+imnaiyar@users.noreply.github.com> Date: Fri, 6 Dec 2024 00:22:02 +0530 Subject: [PATCH] feat(ClientApplication): add webhook events (#10588) * feat(ClientApplication): add webhook events * refactor: update enum names and add external types * docs(APITypes): reorder * chore: requested changes * chore: requested changes * docs: remove redundancy * Update ClientApplication.js --------- Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com> Co-authored-by: Almeida --- .../src/structures/ClientApplication.js | 40 +++++++++++++++++++ packages/discord.js/src/util/APITypes.js | 10 +++++ packages/discord.js/typings/index.d.ts | 8 ++++ 3 files changed, 58 insertions(+) diff --git a/packages/discord.js/src/structures/ClientApplication.js b/packages/discord.js/src/structures/ClientApplication.js index 9e1492b42..ee7dea261 100644 --- a/packages/discord.js/src/structures/ClientApplication.js +++ b/packages/discord.js/src/structures/ClientApplication.js @@ -243,6 +243,36 @@ class ClientApplication extends Application { this.roleConnectionsVerificationURL ??= null; } + if ('event_webhooks_url' in data) { + /** + * This application's URL to receive event webhooks + * @type {?string} + */ + this.eventWebhooksURL = data.event_webhooks_url; + } else { + this.eventWebhooksURL ??= null; + } + + if ('event_webhooks_status' in data) { + /** + * This application's event webhooks status + * @type {?ApplicationWebhookEventStatus} + */ + this.eventWebhooksStatus = data.event_webhooks_status; + } else { + this.eventWebhooksStatus ??= null; + } + + if ('event_webhooks_types' in data) { + /** + * List of event webhooks types this application subscribes to + * @type {?ApplicationWebhookEventType[]} + */ + this.eventWebhooksTypes = data.event_webhooks_types; + } else { + this.eventWebhooksTypes ??= null; + } + /** * The owner of this OAuth application * @type {?(User|Team)} @@ -284,6 +314,10 @@ class ClientApplication extends Application { * @property {?(BufferResolvable|Base64Resolvable)} [icon] The application's icon * @property {?(BufferResolvable|Base64Resolvable)} [coverImage] The application's cover image * @property {string} [interactionsEndpointURL] The application's interaction endpoint URL + * @property {string} [eventWebhooksURL] The application's event webhooks URL + * @property {ApplicationWebhookEventStatus.Enabled|ApplicationWebhookEventStatus.Disabled} [eventWebhooksStatus] + * The application's event webhooks status. + * @property {ApplicationWebhookEventType[]} [eventWebhooksTypes] The application's event webhooks types * @property {string[]} [tags] The application's tags */ @@ -301,6 +335,9 @@ class ClientApplication extends Application { icon, coverImage, interactionsEndpointURL, + eventWebhooksURL, + eventWebhooksStatus, + eventWebhooksTypes, tags, } = {}) { const data = await this.client.rest.patch(Routes.currentApplication(), { @@ -313,6 +350,9 @@ class ClientApplication extends Application { icon: icon && (await resolveImage(icon)), cover_image: coverImage && (await resolveImage(coverImage)), interactions_endpoint_url: interactionsEndpointURL, + event_webhooks_url: eventWebhooksURL, + event_webhooks_status: eventWebhooksStatus, + event_webhooks_types: eventWebhooksTypes, tags, }, }); diff --git a/packages/discord.js/src/util/APITypes.js b/packages/discord.js/src/util/APITypes.js index 589ae654f..50a9f6c47 100644 --- a/packages/discord.js/src/util/APITypes.js +++ b/packages/discord.js/src/util/APITypes.js @@ -255,6 +255,16 @@ * @see {@link https://discord-api-types.dev/api/discord-api-types-v10/enum/ApplicationRoleConnectionMetadataType} */ +/** + * @external ApplicationWebhookEventStatus + * @see {@link https://discord-api-types.dev/api/discord-api-types-v10/enum/ApplicationWebhookEventStatus} + */ + +/** + * @external ApplicationWebhookEventType + * @see {@link https://discord-api-types.dev/api/discord-api-types-v10/enum/ApplicationWebhookEventType} + */ + /** * @external AttachmentFlags * @see {@link https://discord-api-types.dev/api/discord-api-types-v10/enum/AttachmentFlags} diff --git a/packages/discord.js/typings/index.d.ts b/packages/discord.js/typings/index.d.ts index ae481750a..c4d5d22ed 100644 --- a/packages/discord.js/typings/index.d.ts +++ b/packages/discord.js/typings/index.d.ts @@ -167,6 +167,8 @@ import { SubscriptionStatus, GatewaySendPayload, GatewayDispatchPayload, + ApplicationWebhookEventStatus, + ApplicationWebhookEventType, RESTPostAPIInteractionCallbackWithResponseResult, RESTAPIInteractionCallbackObject, RESTAPIInteractionCallbackResourceObject, @@ -1081,6 +1083,9 @@ export class ClientApplication extends Application { public owner: User | Team | null; public get partial(): boolean; public interactionsEndpointURL: string | null; + public eventWebhooksURL: string | null; + public eventWebhooksStatus: ApplicationWebhookEventStatus | null; + public eventWebhooksTypes: ApplicationWebhookEventType[] | null; public roleConnectionsVerificationURL: string | null; public rpcOrigins: string[]; public edit(options: ClientApplicationEditOptions): Promise; @@ -6972,6 +6977,9 @@ export interface ClientApplicationEditOptions { icon?: BufferResolvable | Base64Resolvable | null; coverImage?: BufferResolvable | Base64Resolvable | null; interactionsEndpointURL?: string; + eventWebhooksURL?: string; + eventWebhooksStatus?: ApplicationWebhookEventStatus.Enabled | ApplicationWebhookEventStatus.Disabled; + eventWebhooksTypes?: readonly ApplicationWebhookEventType[]; tags?: readonly string[]; }