mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-19 04:53:30 +01:00
Prevent Guild.fetchMember from messing with fetchMembers
This commit is contained in:
@@ -73,11 +73,6 @@ class ClientDataManager {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
newGuildMember(guild, data) {
|
|
||||||
if (guild.members.has(data.user.id)) return guild.members.get(data.user.id);
|
|
||||||
return guild._addMember(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
killGuild(guild) {
|
killGuild(guild) {
|
||||||
const already = this.client.guilds.has(guild.id);
|
const already = this.client.guilds.has(guild.id);
|
||||||
this.client.guilds.delete(guild.id);
|
this.client.guilds.delete(guild.id);
|
||||||
|
|||||||
@@ -2,8 +2,7 @@ const Action = require('./Action');
|
|||||||
|
|
||||||
class GuildMemberGetAction extends Action {
|
class GuildMemberGetAction extends Action {
|
||||||
handle(guild, data) {
|
handle(guild, data) {
|
||||||
const client = this.client;
|
const member = guild._addMember(data, false);
|
||||||
const member = client.dataManager.newGuildMember(guild, data);
|
|
||||||
return {
|
return {
|
||||||
member,
|
member,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ class GuildMembersChunkHandler extends AbstractHandler {
|
|||||||
const members = [];
|
const members = [];
|
||||||
|
|
||||||
if (guild) {
|
if (guild) {
|
||||||
for (const member of data.members) members.push(guild._addMember(member, true));
|
for (const member of data.members) members.push(guild._addMember(member, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
guild._checkChunks();
|
guild._checkChunks();
|
||||||
|
|||||||
@@ -426,6 +426,7 @@ class Guild {
|
|||||||
* @returns {Promise<GuildMember>}
|
* @returns {Promise<GuildMember>}
|
||||||
*/
|
*/
|
||||||
fetchMember(user) {
|
fetchMember(user) {
|
||||||
|
if (this._fetchWaiter) return Promise.reject(new Error('already fetching guild members'));
|
||||||
user = this.client.resolver.resolveUser(user);
|
user = this.client.resolver.resolveUser(user);
|
||||||
if (!user) return Promise.reject(new Error('user is not cached'));
|
if (!user) return Promise.reject(new Error('user is not cached'));
|
||||||
if (this.members.has(user.id)) return Promise.resolve(this.members.get(user.id));
|
if (this.members.has(user.id)) return Promise.resolve(this.members.get(user.id));
|
||||||
@@ -576,7 +577,7 @@ class Guild {
|
|||||||
return this.name;
|
return this.name;
|
||||||
}
|
}
|
||||||
|
|
||||||
_addMember(guildUser, noEvent) {
|
_addMember(guildUser, emitEvent = true) {
|
||||||
if (!(guildUser.user instanceof User)) guildUser.user = this.client.dataManager.newUser(guildUser.user);
|
if (!(guildUser.user instanceof User)) guildUser.user = this.client.dataManager.newUser(guildUser.user);
|
||||||
|
|
||||||
guildUser.joined_at = guildUser.joined_at || 0;
|
guildUser.joined_at = guildUser.joined_at || 0;
|
||||||
@@ -600,7 +601,7 @@ class Guild {
|
|||||||
* @param {Guild} guild The guild that the user has joined
|
* @param {Guild} guild The guild that the user has joined
|
||||||
* @param {GuildMember} member The member that has joined
|
* @param {GuildMember} member The member that has joined
|
||||||
*/
|
*/
|
||||||
if (this.client.ws.status === Constants.Status.READY && !noEvent) {
|
if (this.client.ws.status === Constants.Status.READY && emitEvent) {
|
||||||
this.client.emit(Constants.Events.GUILD_MEMBER_ADD, this, member);
|
this.client.emit(Constants.Events.GUILD_MEMBER_ADD, this, member);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user