diff --git a/src/client/Client.js b/src/client/Client.js index 11cd5f403..1b6beab17 100644 --- a/src/client/Client.js +++ b/src/client/Client.js @@ -270,11 +270,12 @@ class Client extends EventEmitter { * Caches a user, or obtains it from the cache if it's already cached. * This is only available when using a bot account. * @param {string} id The ID of the user to obtain + * @param {boolean} [cache=true] Insert the user into the users cache * @returns {Promise} */ - fetchUser(id) { + fetchUser(id, cache = true) { if (this.users.has(id)) return Promise.resolve(this.users.get(id)); - return this.rest.methods.getUser(id); + return this.rest.methods.getUser(id, cache); } /** diff --git a/src/client/rest/RESTMethods.js b/src/client/rest/RESTMethods.js index 414959582..de8198b3c 100644 --- a/src/client/rest/RESTMethods.js +++ b/src/client/rest/RESTMethods.js @@ -258,10 +258,14 @@ class RESTMethods { ); } - getUser(userID) { - return this.rest.makeRequest('get', Constants.Endpoints.user(userID), true).then(data => - this.client.actions.UserGet.handle(data).user - ); + getUser(userID, cache) { + return this.rest.makeRequest('get', Constants.Endpoints.user(userID), true).then(data => { + if (cache) { + return this.client.actions.UserGet.handle(data).user; + } else { + return new User(this.client, data); + } + }); } updateCurrentUser(_data, password) { @@ -351,10 +355,14 @@ class RESTMethods { return this.rest.makeRequest('get', Constants.Endpoints.channelMessage(channel.id, messageID), true); } - getGuildMember(guild, user) { - return this.rest.makeRequest('get', Constants.Endpoints.guildMember(guild.id, user.id), true).then(data => - this.client.actions.GuildMemberGet.handle(guild, data).member - ); + getGuildMember(guild, user, cache) { + return this.rest.makeRequest('get', Constants.Endpoints.guildMember(guild.id, user.id), true).then(data => { + if (cache) { + return this.client.actions.GuildMemberGet.handle(guild, data).member; + } else { + return new GuildMember(guild, data); + } + }); } updateGuildMember(member, data) { diff --git a/src/structures/Guild.js b/src/structures/Guild.js index c9de61847..26ec4273c 100644 --- a/src/structures/Guild.js +++ b/src/structures/Guild.js @@ -325,14 +325,15 @@ class Guild { /** * Fetch a single guild member from a user. * @param {UserResolvable} user The user to fetch the member for + * @param {boolean} [cache=true] Insert the user into the users cache * @returns {Promise} */ - fetchMember(user) { + fetchMember(user, cache = true) { if (this._fetchWaiter) return Promise.reject(new Error('Already fetching guild members.')); user = this.client.resolver.resolveUser(user); if (!user) return Promise.reject(new Error('User is not cached. Use Client.fetchUser first.')); if (this.members.has(user.id)) return Promise.resolve(this.members.get(user.id)); - return this.client.rest.methods.getGuildMember(this, user); + return this.client.rest.methods.getGuildMember(this, user, cache); } /**