feat(interactions): add launchActivity method (#10646)

* feat(interactions): add launchActivity method

* chore: suggestion

Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com>

* chore: suggestion

Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com>

* fix: overload and add tests

* chore: wording

* chore: wording

* chore: spacing

---------

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:
Naiyar
2025-01-24 15:11:18 +06:00
committed by Jiralite
parent b14d8d970b
commit caa7833ffb

View File

@@ -528,7 +528,7 @@ export class InteractionsAPI {
}
/**
* Sends a premium required response to an interaction
* Launches an activity and returns an interaction callback object
*
* @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}
* @param interactionId - The id of the interaction
@@ -549,4 +549,70 @@ export class InteractionsAPI {
signal,
});
}
/**
* Launches an activity and returns an interaction callback object
*
* @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}
* @param interactionId - The id of the interaction
* @param interactionToken - The token of the interaction
* @param body - The callback data for launching the activity
* @param options - The options for launching the activity
*/
public async launchActivity(
interactionId: Snowflake,
interactionToken: string,
body: RESTPostAPIInteractionCallbackQuery & { with_response: true },
options?: Pick<RequestData, 'signal'>,
): Promise<RESTPostAPIInteractionCallbackWithResponseResult>;
/**
* Launches an activity
*
* @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}
* @param interactionId - The id of the interaction
* @param interactionToken - The token of the interaction
* @param body - The callback data for launching the activity
* @param options - The options for launching the activity
*/
public async launchActivity(
interactionId: Snowflake,
interactionToken: string,
body?: RESTPostAPIInteractionCallbackQuery & { with_response?: false },
options?: Pick<RequestData, 'signal'>,
): Promise<undefined>;
/**
* Launches an activity
*
* @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}
* @param interactionId - The id of the interaction
* @param interactionToken - The token of the interaction
* @param body - The callback data for launching the activity
* @param options - The options for launching the activity
*/
public async launchActivity(
interactionId: Snowflake,
interactionToken: string,
body?: RESTPostAPIInteractionCallbackQuery,
options?: Pick<RequestData, 'signal'>,
): Promise<RESTPostAPIInteractionCallbackWithResponseResult | undefined>;
public async launchActivity(
interactionId: Snowflake,
interactionToken: string,
{ with_response }: RESTPostAPIInteractionCallbackQuery = {},
{ signal }: Pick<RequestData, 'signal'> = {},
) {
const response = await this.rest.post(Routes.interactionCallback(interactionId, interactionToken), {
query: makeURLSearchParams({ with_response }),
auth: false,
body: {
type: InteractionResponseType.LaunchActivity,
},
signal,
});
return with_response ? response : undefined;
}
}