mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-09 16:13:31 +01:00
fix(Guild): fetch member if already in the guild (#4967)
This commit is contained in:
@@ -18,6 +18,7 @@ const RoleManager = require('../managers/RoleManager');
|
|||||||
const VoiceStateManager = require('../managers/VoiceStateManager');
|
const VoiceStateManager = require('../managers/VoiceStateManager');
|
||||||
const Collection = require('../util/Collection');
|
const Collection = require('../util/Collection');
|
||||||
const {
|
const {
|
||||||
|
browser,
|
||||||
ChannelTypes,
|
ChannelTypes,
|
||||||
DefaultMessageNotifications,
|
DefaultMessageNotifications,
|
||||||
PartialTypes,
|
PartialTypes,
|
||||||
@@ -993,29 +994,25 @@ class Guild extends Base {
|
|||||||
* @param {boolean} [options.deaf] Whether the member should be deafened (requires `DEAFEN_MEMBERS`)
|
* @param {boolean} [options.deaf] Whether the member should be deafened (requires `DEAFEN_MEMBERS`)
|
||||||
* @returns {Promise<GuildMember>}
|
* @returns {Promise<GuildMember>}
|
||||||
*/
|
*/
|
||||||
addMember(user, options) {
|
async addMember(user, options) {
|
||||||
user = this.client.users.resolveID(user);
|
user = this.client.users.resolveID(user);
|
||||||
if (!user) return Promise.reject(new TypeError('INVALID_TYPE', 'user', 'UserResolvable'));
|
if (!user) throw new TypeError('INVALID_TYPE', 'user', 'UserResolvable');
|
||||||
if (this.members.cache.has(user)) return Promise.resolve(this.members.cache.get(user));
|
if (this.members.cache.has(user)) return this.members.cache.get(user);
|
||||||
options.access_token = options.accessToken;
|
options.access_token = options.accessToken;
|
||||||
if (options.roles) {
|
if (options.roles) {
|
||||||
const roles = [];
|
const roles = [];
|
||||||
for (let role of options.roles instanceof Collection ? options.roles.values() : options.roles) {
|
for (let role of options.roles instanceof Collection ? options.roles.values() : options.roles) {
|
||||||
role = this.roles.resolve(role);
|
role = this.roles.resolve(role);
|
||||||
if (!role) {
|
if (!role) {
|
||||||
return Promise.reject(
|
throw new TypeError('INVALID_TYPE', 'options.roles', 'Array or Collection of Roles or Snowflakes', true);
|
||||||
new TypeError('INVALID_TYPE', 'options.roles', 'Array or Collection of Roles or Snowflakes', true),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
roles.push(role.id);
|
roles.push(role.id);
|
||||||
}
|
}
|
||||||
options.roles = roles;
|
options.roles = roles;
|
||||||
}
|
}
|
||||||
return this.client.api
|
const data = await this.client.api.guilds(this.id).members(user).put({ data: options });
|
||||||
.guilds(this.id)
|
// Data is an empty buffer if the member is already part of the guild.
|
||||||
.members(user)
|
return data instanceof (browser ? ArrayBuffer : Buffer) ? this.members.fetch(user) : this.members.add(data);
|
||||||
.put({ data: options })
|
|
||||||
.then(data => this.members.add(data));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user