From 63ff6a07ebcba7e9134e3902e338e8dc6564ee63 Mon Sep 17 00:00:00 2001 From: Advaith Date: Tue, 6 Apr 2021 14:03:45 -0700 Subject: [PATCH] feat(Activity): add missing fields (#4984) Co-authored-by: Jan <66554238+Vaporox@users.noreply.github.com> --- src/structures/Presence.js | 40 +++++++++++++++++++++++++++++++++++++- typings/index.d.ts | 7 +++++++ 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/src/structures/Presence.js b/src/structures/Presence.js index be4dca665ebb..bf75118ae169 100644 --- a/src/structures/Presence.js +++ b/src/structures/Presence.js @@ -138,6 +138,14 @@ class Presence { } } +/** + * The platform of this activity: + * * **`desktop`** + * * **`samsung`** - playing on Samsung Galaxy + * * **`xbox`** - playing on Xbox Live + * @typedef {string} ActivityPlatform + */ + /** * Represents an activity that is part of a user's presence. */ @@ -146,7 +154,13 @@ class Activity { Object.defineProperty(this, 'presence', { value: presence }); /** - * The name of the activity being played + * The ID of the activity + * @type {string} + */ + this.id = data.id; + + /** + * The name of the activity * @type {string} */ this.name = data.name; @@ -194,6 +208,18 @@ class Activity { } : null; + /** + * The ID of the song on Spotify + * @type {?string} + */ + this.syncID = data.sync_id ?? null; + + /** + * The platform the game is being played on + * @type {?ActivityPlatform} + */ + this.platform = data.platform ?? null; + /** * Party of the activity * @type {?Object} @@ -222,6 +248,18 @@ class Activity { */ this.emoji = data.emoji ? new Emoji(presence.client, data.emoji) : null; + /** + * The ID of the game or Spotify session + * @type {?string} + */ + this.sessionID = data.session_id ?? null; + + /** + * The labels of the buttons of this rich presence + * @type {string[]} + */ + this.buttons = data.buttons ?? []; + /** * Creation date of the activity * @type {number} diff --git a/typings/index.d.ts b/typings/index.d.ts index 1add8b580dc2..ea41f7e95631 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -30,17 +30,22 @@ declare module 'discord.js' { constructor(presence: Presence, data?: object); public applicationID: Snowflake | null; public assets: RichPresenceAssets | null; + public buttons: string[]; public readonly createdAt: Date; public createdTimestamp: number; public details: string | null; public emoji: Emoji | null; public flags: Readonly; + public id: string; public name: string; public party: { id: string | null; size: [number, number]; } | null; + public platform: ActivityPlatform | null; + public sessionID: string | null; public state: string | null; + public syncID: string | null; public timestamps: { start: Date | null; end: Date | null; @@ -2170,6 +2175,8 @@ declare module 'discord.js' { shardID?: number | readonly number[]; } + type ActivityPlatform = 'desktop' | 'samsung' | 'xbox'; + type ActivityType = 'PLAYING' | 'STREAMING' | 'LISTENING' | 'WATCHING' | 'CUSTOM_STATUS' | 'COMPETING'; interface AddGuildMemberOptions {