Skip to content

Commit 6ddf7e2

Browse files
committed
Add get activity instance route
1 parent f337065 commit 6ddf7e2

File tree

5 files changed

+83
-1
lines changed

5 files changed

+83
-1
lines changed

lib/Constants.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1508,6 +1508,11 @@ export enum MemberJoinSourceType {
15081508
MANUAL_MEMBER_VERIFICATION = 7,
15091509
}
15101510

1511+
export enum ActivityLocationKind {
1512+
GUILD_CHANNEL = "gc",
1513+
PRIVATE_CHANNEL = "pc",
1514+
}
1515+
15111516
// entries are intentionally not aligned
15121517
/** The error codes that can be received. See [Discord's Documentation](https://discord.com/developers/docs/topics/opcodes-and-status-codes#json). */
15131518
export enum JSONErrorCodes {

lib/routes/Applications.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,15 @@ import Entitlement from "../structures/Entitlement";
2828
import TestEntitlement from "../structures/TestEntitlement";
2929
import ClientApplication from "../structures/ClientApplication";
3030
import type {
31+
ActivityInstance,
3132
ApplicationEmoji,
3233
ApplicationEmojis,
3334
CreateApplicationEmojiOptions,
3435
CreatePrimaryEntryPointApplicationCommandOptions,
3536
EditApplicationEmojiOptions,
3637
EditApplicationOptions,
3738
RESTApplication,
39+
RawActivityInstance,
3840
RawApplicationEmoji,
3941
RawApplicationEmojis,
4042
RawClientApplication,
@@ -387,6 +389,29 @@ export default class Applications {
387389
});
388390
}
389391

392+
/**
393+
* Get an activity instance.
394+
* @param applicationID The ID of the application.
395+
* @param instanceID The ID of the instance.
396+
*/
397+
async getActivityInstance(applicationID: string, instanceID: string): Promise<ActivityInstance> {
398+
return this._manager.authRequest<RawActivityInstance>({
399+
method: "GET",
400+
path: Routes.APPLICATION_ACTIVITY_INSTANCE(applicationID, instanceID)
401+
}).then(data => ({
402+
applicationID: data.application_id,
403+
instanceID: data.instance_id,
404+
launchID: data.launch_id,
405+
location: {
406+
channelID: data.location.channel_id,
407+
guildID: data.location.guild_id,
408+
id: data.location.id,
409+
kind: data.location.kind
410+
},
411+
users: data.users
412+
}));
413+
}
414+
390415
/**
391416
* Get the currently authenticated bot's application info as a bare {@link ClientApplication | ClientApplication}.
392417
* @caching This method **does not** cache its result.

lib/structures/ClientApplication.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ import type {
2727
ApplicationEmoji,
2828
ApplicationEmojis,
2929
CreateApplicationEmojiOptions,
30-
EditApplicationEmojiOptions
30+
EditApplicationEmojiOptions,
31+
ActivityInstance
3132
} from "../types/applications";
3233
import type { JSONClientApplication } from "../types/json";
3334
import type { ApplicationCommandTypes } from "../Constants";
@@ -199,6 +200,14 @@ export default class ClientApplication extends Base {
199200
return this.client.rest.applications.editGuildCommandPermissions(this.id, guildID, commandID, options);
200201
}
201202

203+
/**
204+
* Get an activity instance.
205+
* @param instanceID The ID of the instance.
206+
*/
207+
async getActivityInstance(instanceID: string): Promise<ActivityInstance> {
208+
return this.client.rest.applications.getActivityInstance(this.id, instanceID);
209+
}
210+
202211
/**
203212
* Get an emoji for this application.
204213
* @param emojiID The ID of the emoji to get.

lib/types/applications.d.ts

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import type { ImplementedChannels, InstallParams, RawOAuthGuild, RawUser } from
33
import type { ExclusifyUnion } from "./shared";
44
import type { Emoji, WithRequired } from "./misc";
55
import type {
6+
ActivityLocationKind,
67
ApplicationCommandOptionTypes,
78
ApplicationCommandPermissionTypes,
89
ApplicationCommandTypes,
@@ -518,3 +519,44 @@ export interface SearchSKUSubscriptions {
518519
/** Required except for OAuth queries. */
519520
userID?: string;
520521
}
522+
523+
export interface RawActivityInstance {
524+
application_id: string;
525+
instance_id: string;
526+
launch_id: string;
527+
location: RawActivityLocation;
528+
users: Array<string>;
529+
}
530+
531+
532+
export interface RawActivityLocation {
533+
channel_id: string;
534+
guild_id?: string | null;
535+
id: string;
536+
kind: ActivityLocationKind;
537+
}
538+
539+
export interface ActivityInstance {
540+
/** Application ID. */
541+
applicationID: string;
542+
/** Activity Instance ID. */
543+
instanceID: string;
544+
/** Unique identifier for the launch. */
545+
launchID: string;
546+
/** Location the instance is runnning in. */
547+
location: ActivityLocation;
548+
/** IDs of the Users currently connected to the instance. */
549+
users: Array<string>;
550+
}
551+
552+
553+
export interface ActivityLocation {
554+
/** ID of the Channel. */
555+
channelID: string;
556+
/** ID of the Guild. */
557+
guildID?: string | null;
558+
/** Unique identifier for the location. */
559+
id: string;
560+
/** Enum describing kind of location. `gc` = guild channel, `pc` = private channel (dm, gdm). */
561+
kind: ActivityLocationKind;
562+
}

lib/util/Routes.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ export const SKU_SUBSCRIPTIONS = (skuID: string) => encode`/
157157
export const SKU_SUBSCRIPTION = (skuID: string, subscriptionID: string) => encode`/skus/${skuID}/subscriptions/${subscriptionID}`;
158158
export const APPLICATION_EMOJIS = (applicationID: string) => encode`/applications/${applicationID}/emojis`;
159159
export const APPLICATION_EMOJI = (applicationID: string, emojiID: string) => encode`/applications/${applicationID}/emojis/${emojiID}`;
160+
export const APPLICATION_ACTIVITY_INSTANCE = (applicationID: string, instanceID: string) => encode`/applications/${applicationID}/activity-instances/${instanceID}`;
160161

161162
// Misc
162163
export const GATEWAY = "/gateway";

0 commit comments

Comments
 (0)