From a04172325af5a3a9880253bb8dc7c057a0426d83 Mon Sep 17 00:00:00 2001 From: Jiralite <33201955+Jiralite@users.noreply.github.com> Date: Sat, 4 Oct 2025 17:35:21 +0100 Subject: [PATCH] feat: Add gateway endpoints (#11130) feat: add gateway Co-Authored-By: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com> --- packages/core/src/api/gateway.ts | 31 +++++++++++++++++++++++++++++++ packages/core/src/api/index.ts | 5 +++++ 2 files changed, 36 insertions(+) create mode 100644 packages/core/src/api/gateway.ts diff --git a/packages/core/src/api/gateway.ts b/packages/core/src/api/gateway.ts new file mode 100644 index 000000000..a98f8b9e3 --- /dev/null +++ b/packages/core/src/api/gateway.ts @@ -0,0 +1,31 @@ +/* eslint-disable jsdoc/check-param-names */ + +import type { RequestData, REST } from '@discordjs/rest'; +import { Routes, type RESTGetAPIGatewayBotResult, type RESTGetAPIGatewayResult } from 'discord-api-types/v10'; + +export class GatewayAPI { + public constructor(private readonly rest: REST) {} + + /** + * Gets gateway information. + * + * @see {@link https://discord.com/developers/docs/events/gateway#get-gateway} + * @param options - The options for fetching the gateway information + */ + public async get({ signal }: Pick = {}) { + return this.rest.get(Routes.gateway(), { + auth: false, + signal, + }) as Promise; + } + + /** + * Gets gateway information with additional metadata. + * + * @see {@link https://discord.com/developers/docs/events/gateway#get-gateway-bot} + * @param options - The options for fetching the gateway information + */ + public async getBot({ signal }: Pick = {}) { + return this.rest.get(Routes.gatewayBot(), { signal }) as Promise; + } +} diff --git a/packages/core/src/api/index.ts b/packages/core/src/api/index.ts index a44fc53a8..a0a908255 100644 --- a/packages/core/src/api/index.ts +++ b/packages/core/src/api/index.ts @@ -2,6 +2,7 @@ import type { REST } from '@discordjs/rest'; import { ApplicationCommandsAPI } from './applicationCommands.js'; import { ApplicationsAPI } from './applications.js'; import { ChannelsAPI } from './channel.js'; +import { GatewayAPI } from './gateway.js'; import { GuildsAPI } from './guild.js'; import { InteractionsAPI } from './interactions.js'; import { InvitesAPI } from './invite.js'; @@ -19,6 +20,7 @@ import { WebhooksAPI } from './webhook.js'; export * from './applicationCommands.js'; export * from './applications.js'; export * from './channel.js'; +export * from './gateway.js'; export * from './guild.js'; export * from './interactions.js'; export * from './invite.js'; @@ -40,6 +42,8 @@ export class API { public readonly channels: ChannelsAPI; + public readonly gateway: GatewayAPI; + public readonly guilds: GuildsAPI; public readonly interactions: InteractionsAPI; @@ -70,6 +74,7 @@ export class API { this.applicationCommands = new ApplicationCommandsAPI(rest); this.applications = new ApplicationsAPI(rest); this.channels = new ChannelsAPI(rest); + this.gateway = new GatewayAPI(rest); this.guilds = new GuildsAPI(rest); this.invites = new InvitesAPI(rest); this.monetization = new MonetizationAPI(rest);