Fixed User#fetchProfile, UserProfile#premium and added #flags (#1629)

* Fixed User#fetchProfile, UserProfile#premium and added #flags

* made UserProfile#flags a getter and stored the raw bitfield under UserProfile#_flags

* lowercased Flags
This commit is contained in:
SpaceEEC
2017-07-04 00:28:53 +02:00
committed by Crawl
parent 3da95d7e68
commit c42e53d70d
3 changed files with 36 additions and 2 deletions

View File

@@ -224,7 +224,7 @@ class User {
* @returns {Promise<UserProfile>}
*/
fetchProfile() {
return this.client.api.users[this.id].profile.get().then(data => new UserProfile(data));
return this.client.api.users[this.id].profile.get().then(data => new UserProfile(this, data));
}
/**

View File

@@ -1,4 +1,5 @@
const Collection = require('../util/Collection');
const { UserFlags } = require('../util/Constants');
const UserConnection = require('./UserConnection');
/**
@@ -40,7 +41,14 @@ class UserProfile {
* If the user has Discord Premium
* @type {boolean}
*/
this.premium = data.premium;
this.premium = Boolean(data.premium_since);
/**
* The Bitfield of the users' flags
* @type {number}
* @private
*/
this._flags = data.user.flags;
/**
* The date since which the user has had Discord Premium
@@ -57,6 +65,19 @@ class UserProfile {
this.connections.set(connection.id, new UserConnection(this.user, connection));
}
}
/**
* The flags the user has
* @type {UserFlags[]}
* @readonly
*/
get flags() {
const flags = [];
for (const [name, flag] of Object.entries(UserFlags)) {
if ((this._flags & flag) === flag) flags.push(name);
}
return flags;
}
}
module.exports = UserProfile;

View File

@@ -481,6 +481,19 @@ exports.UserSettingsMap = {
},
};
/**
* All flags users can have:
* - STAFF
* - PARTNER
* - HYPESQUAD
* @typedef {string} UserFlags
*/
exports.UserFlags = {
STAFF: 1 << 0,
PARTNER: 1 << 1,
HYPESQUAD: 1 << 2,
};
exports.Colors = {
DEFAULT: 0x000000,
AQUA: 0x1ABC9C,