mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-09 16:13:31 +01:00
feat(api): add stage instances (#9578)
* feat(core): add stage instances * chore: use one import * Apply suggestions from code review Co-authored-by: Aura Román <kyradiscord@gmail.com> * chore: requested changes Co-authored-by: David Malchin <malchin459@gmail.com> Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: David Malchin <malchin459@gmail.com> Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com> --------- Co-authored-by: Aura Román <kyradiscord@gmail.com> Co-authored-by: David Malchin <malchin459@gmail.com> Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com> Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
This commit is contained in:
@@ -6,6 +6,7 @@ import { InteractionsAPI } from './interactions.js';
|
||||
import { InvitesAPI } from './invite.js';
|
||||
import { OAuth2API } from './oauth2.js';
|
||||
import { RoleConnectionsAPI } from './roleConnections.js';
|
||||
import { StageInstancesAPI } from './stageInstances.js';
|
||||
import { StickersAPI } from './sticker.js';
|
||||
import { ThreadsAPI } from './thread.js';
|
||||
import { UsersAPI } from './user.js';
|
||||
@@ -19,6 +20,7 @@ export * from './interactions.js';
|
||||
export * from './invite.js';
|
||||
export * from './oauth2.js';
|
||||
export * from './roleConnections.js';
|
||||
export * from './stageInstances.js';
|
||||
export * from './sticker.js';
|
||||
export * from './thread.js';
|
||||
export * from './user.js';
|
||||
@@ -40,6 +42,8 @@ export class API {
|
||||
|
||||
public readonly roleConnections: RoleConnectionsAPI;
|
||||
|
||||
public readonly stageInstances: StageInstancesAPI;
|
||||
|
||||
public readonly stickers: StickersAPI;
|
||||
|
||||
public readonly threads: ThreadsAPI;
|
||||
@@ -57,6 +61,7 @@ export class API {
|
||||
this.invites = new InvitesAPI(rest);
|
||||
this.roleConnections = new RoleConnectionsAPI(rest);
|
||||
this.oauth2 = new OAuth2API(rest);
|
||||
this.stageInstances = new StageInstancesAPI(rest);
|
||||
this.stickers = new StickersAPI(rest);
|
||||
this.threads = new ThreadsAPI(rest);
|
||||
this.users = new UsersAPI(rest);
|
||||
|
||||
76
packages/core/src/api/stageInstances.ts
Normal file
76
packages/core/src/api/stageInstances.ts
Normal file
@@ -0,0 +1,76 @@
|
||||
/* eslint-disable jsdoc/check-param-names */
|
||||
|
||||
import type { RequestData, REST } from '@discordjs/rest';
|
||||
import {
|
||||
type Snowflake,
|
||||
type RESTGetAPIStageInstanceResult,
|
||||
type RESTPatchAPIStageInstanceJSONBody,
|
||||
type RESTPatchAPIStageInstanceResult,
|
||||
type RESTPostAPIStageInstanceJSONBody,
|
||||
type RESTPostAPIStageInstanceResult,
|
||||
Routes,
|
||||
} from 'discord-api-types/v10';
|
||||
|
||||
export class StageInstancesAPI {
|
||||
public constructor(private readonly rest: REST) {}
|
||||
|
||||
/**
|
||||
* Creates a new stage instance
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/stage-instance#get-stage-instance}
|
||||
* @param body - The data to use when creating the new stage instance
|
||||
* @param options - The options for creating the new stage instance
|
||||
*/
|
||||
public async create(
|
||||
body: RESTPostAPIStageInstanceJSONBody,
|
||||
{ reason, signal }: Pick<RequestData, 'reason' | 'signal'> = {},
|
||||
) {
|
||||
return this.rest.post(Routes.stageInstances(), {
|
||||
body,
|
||||
reason,
|
||||
signal,
|
||||
}) as Promise<RESTPostAPIStageInstanceResult>;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetches a stage instance
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/stage-instance#get-stage-instance}
|
||||
* @param channelId - The id of the channel
|
||||
* @param options - The options for fetching the stage instance
|
||||
*/
|
||||
public async get(channelId: Snowflake, { signal }: Pick<RequestData, 'signal'> = {}) {
|
||||
return this.rest.get(Routes.stageInstance(channelId), { signal }) as Promise<RESTGetAPIStageInstanceResult>;
|
||||
}
|
||||
|
||||
/**
|
||||
* Edits a stage instance
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/stage-instance#modify-stage-instance}
|
||||
* @param channelId - The id of the channel
|
||||
* @param body - The new stage instance data
|
||||
* @param options - The options for editing the stage instance
|
||||
*/
|
||||
public async edit(
|
||||
channelId: Snowflake,
|
||||
body: RESTPatchAPIStageInstanceJSONBody,
|
||||
{ reason, signal }: Pick<RequestData, 'reason' | 'signal'> = {},
|
||||
) {
|
||||
return this.rest.patch(Routes.stageInstance(channelId), {
|
||||
body,
|
||||
reason,
|
||||
signal,
|
||||
}) as Promise<RESTPatchAPIStageInstanceResult>;
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes a stage instance
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/stage-instance#delete-stage-instance}
|
||||
* @param channelId - The id of the channel
|
||||
* @param options - The options for deleting the stage instance
|
||||
*/
|
||||
public async delete(channelId: Snowflake, { reason, signal }: Pick<RequestData, 'reason' | 'signal'> = {}) {
|
||||
await this.rest.delete(Routes.stageInstance(channelId), { reason, signal });
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user