mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-17 03:53:29 +01:00
fix(Presence): account for multiple activities everywhere (#3703)
* fix(Presence): account for multiple activities everywhere * refactor(Presence): make initialization of 'activities' more readable
This commit is contained in:
@@ -68,7 +68,7 @@ class ClientPresence extends Presence {
|
|||||||
};
|
};
|
||||||
|
|
||||||
if ((status || afk || since) && !activity) {
|
if ((status || afk || since) && !activity) {
|
||||||
packet.game = this.activity;
|
packet.game = this.activities[0] || null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (packet.game) {
|
if (packet.game) {
|
||||||
|
|||||||
@@ -149,7 +149,7 @@ class ClientUser extends Structures.get('User') {
|
|||||||
* @example
|
* @example
|
||||||
* // Set the client user's activity
|
* // Set the client user's activity
|
||||||
* client.user.setActivity('discord.js', { type: 'WATCHING' })
|
* client.user.setActivity('discord.js', { type: 'WATCHING' })
|
||||||
* .then(presence => console.log(`Activity set to ${presence.activity.name}`))
|
* .then(presence => console.log(`Activity set to ${presence.activities[0].name}`))
|
||||||
* .catch(console.error);
|
* .catch(console.error);
|
||||||
*/
|
*/
|
||||||
setActivity(name, options = {}) {
|
setActivity(name, options = {}) {
|
||||||
|
|||||||
@@ -85,11 +85,17 @@ class Presence {
|
|||||||
*/
|
*/
|
||||||
this.status = data.status || this.status || 'offline';
|
this.status = data.status || this.status || 'offline';
|
||||||
|
|
||||||
/**
|
if (data.activities) {
|
||||||
* The activities of this presence
|
/**
|
||||||
* @type {Activity[]}
|
* The activities of this presence
|
||||||
*/
|
* @type {Activity[]}
|
||||||
this.activities = data.activities ? data.activities.map(activity => new Activity(this, activity)) : [];
|
*/
|
||||||
|
this.activities = data.activities.map(activity => new Activity(this, activity));
|
||||||
|
} else if (data.activity || data.game) {
|
||||||
|
this.activities = [new Activity(this, data.game || data.activity)];
|
||||||
|
} else {
|
||||||
|
this.activities = [];
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The devices this presence is on
|
* The devices this presence is on
|
||||||
@@ -105,7 +111,7 @@ class Presence {
|
|||||||
|
|
||||||
_clone() {
|
_clone() {
|
||||||
const clone = Object.assign(Object.create(this), this);
|
const clone = Object.assign(Object.create(this), this);
|
||||||
if (this.activity) clone.activity = this.activity._clone();
|
if (this.activities) clone.activities = this.activities.map(activity => activity._clone());
|
||||||
return clone;
|
return clone;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -118,10 +124,11 @@ class Presence {
|
|||||||
return this === presence || (
|
return this === presence || (
|
||||||
presence &&
|
presence &&
|
||||||
this.status === presence.status &&
|
this.status === presence.status &&
|
||||||
this.activity ? this.activity.equals(presence.activity) : !presence.activity &&
|
this.activities.length === presence.activities.length &&
|
||||||
this.clientStatus.web === presence.clientStatus.web &&
|
this.activities.every((activity, index) => activity.equals(presence.activities[index])) &&
|
||||||
this.clientStatus.mobile === presence.clientStatus.mobile &&
|
this.clientStatus.web === presence.clientStatus.web &&
|
||||||
this.clientStatus.desktop === presence.clientStatus.desktop
|
this.clientStatus.mobile === presence.clientStatus.mobile &&
|
||||||
|
this.clientStatus.desktop === presence.clientStatus.desktop
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user