UNPKG

seyfert

Version:

The most advanced framework for discord bots

74 lines (73 loc) 3.06 kB
import type { MakeRequired, OmitInsert } from '../../common'; import type { APIGuild } from './guild'; import type { ApplicationIntegrationType } from './interactions'; import type { APIEntitlement } from './monetization'; import type { OAuth2Scopes } from './oauth2'; import type { APIUser } from './user'; /** * https://discord.com/developers/docs/events/webhook-events#payload-structure */ export interface WebhookEventPayload<WET extends WebhookEventTypes = WebhookEventTypes> { /** Version scheme for the webhook event */ version: 1; /** ID of your app */ application_id: string; /** Type of webhook, either 0 for PING or 1 for webhook events */ type: WET; /** Event data payload */ event: EventBodyObject<WET>; } export type EventBodyObjectData<T extends WebhookEventTypes> = T extends WebhookEventTypes.ApplicationAuthorized ? ApplicationAuthorizedEvent : APIEntitlement; /** * https://discord.com/developers/docs/events/webhook-events#event-body-object */ export interface EventBodyObject<T extends WebhookEventTypes = WebhookEventTypes> { /** Event type */ type: T; /** Timestamp of when the event occurred in ISO8601 format */ timestamp: string; /** Data for the event. The shape depends on the event type */ data?: EventBodyObjectData<T>; } /** * https://discord.com/developers/docs/events/webhook-events#application-authorized-application-authorized-structure */ export interface ApplicationAuthorizedEvent { /** Installation context for the authorization. Either guild (0) if installed to a server or user (1) if installed to a user's account */ integration_type?: ApplicationIntegrationType; /** User who authorized the app */ user: APIUser; /** List of scopes the user authorized */ scopes: `${OAuth2Scopes}`[]; /** Server which app was authorized for (when integration type is 0) */ guild?: APIGuild; } export type ApplicationGuildAuthorizedEvent = MakeRequired<OmitInsert<ApplicationAuthorizedEvent, 'integration_type', { integration_type: ApplicationIntegrationType.GuildInstall; }>, 'guild'>; export type ApplicationUserAuthorizedEvent = OmitInsert<ApplicationAuthorizedEvent, 'integration_type' | 'guild', { integration_type: ApplicationIntegrationType.UserInstall; }>; /** * https://discord.com/developers/docs/events/webhook-events#webhook-types */ export declare enum WebhookRequestType { /** PING event sent to verify your Webhook Event URL is active */ PING = 0, /** Webhook event (details for event in event body object) */ Event = 1 } /** * https://discord.com/developers/docs/events/webhook-events#event-types */ export declare enum WebhookEventTypes { /** Sent when an app was authorized by a user to a server or their account */ ApplicationAuthorized = "APPLICATION_AUTHORIZED", /** Entitlement was created */ EntitlementCreate = "ENTITLEMENT_CREATE", /** * User was added to a Quest (currently unavailable) * @unstable */ QuestUserEnrollment = "QUEST_USER_ENROLLMENT" }