mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-13 01:53:30 +01:00
fix: in/de-crement max listener for client events (#4168)
This commit is contained in:
@@ -139,6 +139,28 @@ class BaseClient extends EventEmitter {
|
|||||||
this._immediates.delete(immediate);
|
this._immediates.delete(immediate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Increments max listeners by one, if they are not zero.
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
incrementMaxListeners() {
|
||||||
|
const maxListeners = this.getMaxListeners();
|
||||||
|
if (maxListeners !== 0) {
|
||||||
|
this.setMaxListeners(maxListeners + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Decrements max listeners by one, if they are not zero.
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
decrementMaxListeners() {
|
||||||
|
const maxListeners = this.getMaxListeners();
|
||||||
|
if (maxListeners !== 0) {
|
||||||
|
this.setMaxListeners(maxListeners - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
toJSON(...props) {
|
toJSON(...props) {
|
||||||
return Util.flatten(this, { domain: false }, ...props);
|
return Util.flatten(this, { domain: false }, ...props);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -196,15 +196,18 @@ class GuildManager extends BaseManager {
|
|||||||
|
|
||||||
const handleGuild = guild => {
|
const handleGuild = guild => {
|
||||||
if (guild.id === data.id) {
|
if (guild.id === data.id) {
|
||||||
this.client.removeListener(Events.GUILD_CREATE, handleGuild);
|
|
||||||
this.client.clearTimeout(timeout);
|
this.client.clearTimeout(timeout);
|
||||||
|
this.client.removeListener(Events.GUILD_CREATE, handleGuild);
|
||||||
|
this.client.decrementMaxListeners();
|
||||||
resolve(guild);
|
resolve(guild);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
this.client.incrementMaxListeners();
|
||||||
this.client.on(Events.GUILD_CREATE, handleGuild);
|
this.client.on(Events.GUILD_CREATE, handleGuild);
|
||||||
|
|
||||||
const timeout = this.client.setTimeout(() => {
|
const timeout = this.client.setTimeout(() => {
|
||||||
this.client.removeListener(Events.GUILD_CREATE, handleGuild);
|
this.client.removeListener(Events.GUILD_CREATE, handleGuild);
|
||||||
|
this.client.decrementMaxListeners();
|
||||||
resolve(this.client.guilds.add(data));
|
resolve(this.client.guilds.add(data));
|
||||||
}, 10000);
|
}, 10000);
|
||||||
return undefined;
|
return undefined;
|
||||||
|
|||||||
@@ -267,17 +267,21 @@ class GuildMemberManager extends BaseManager {
|
|||||||
(limit && fetchedMembers.size >= limit) ||
|
(limit && fetchedMembers.size >= limit) ||
|
||||||
i === chunk.count
|
i === chunk.count
|
||||||
) {
|
) {
|
||||||
this.guild.client.removeListener(Events.GUILD_MEMBERS_CHUNK, handler);
|
this.client.clearTimeout(timeout);
|
||||||
|
this.client.removeListener(Events.GUILD_MEMBERS_CHUNK, handler);
|
||||||
|
this.client.decrementMaxListeners();
|
||||||
let fetched = option ? fetchedMembers : this.cache;
|
let fetched = option ? fetchedMembers : this.cache;
|
||||||
if (user_ids && !Array.isArray(user_ids) && fetched.size) fetched = fetched.first();
|
if (user_ids && !Array.isArray(user_ids) && fetched.size) fetched = fetched.first();
|
||||||
resolve(fetched);
|
resolve(fetched);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
const timeout = this.guild.client.setTimeout(() => {
|
const timeout = this.client.setTimeout(() => {
|
||||||
this.guild.client.removeListener(Events.GUILD_MEMBERS_CHUNK, handler);
|
this.client.removeListener(Events.GUILD_MEMBERS_CHUNK, handler);
|
||||||
|
this.client.decrementMaxListeners();
|
||||||
reject(new Error('GUILD_MEMBERS_TIMEOUT'));
|
reject(new Error('GUILD_MEMBERS_TIMEOUT'));
|
||||||
}, time);
|
}, time);
|
||||||
this.guild.client.on(Events.GUILD_MEMBERS_CHUNK, handler);
|
this.client.incrementMaxListeners();
|
||||||
|
this.client.on(Events.GUILD_MEMBERS_CHUNK, handler);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ class MessageCollector extends Collector {
|
|||||||
this._handleChannelDeletion = this._handleChannelDeletion.bind(this);
|
this._handleChannelDeletion = this._handleChannelDeletion.bind(this);
|
||||||
this._handleGuildDeletion = this._handleGuildDeletion.bind(this);
|
this._handleGuildDeletion = this._handleGuildDeletion.bind(this);
|
||||||
|
|
||||||
if (this.client.getMaxListeners() !== 0) this.client.setMaxListeners(this.client.getMaxListeners() + 1);
|
this.client.incrementMaxListeners();
|
||||||
this.client.on(Events.MESSAGE_CREATE, this.handleCollect);
|
this.client.on(Events.MESSAGE_CREATE, this.handleCollect);
|
||||||
this.client.on(Events.MESSAGE_DELETE, this.handleDispose);
|
this.client.on(Events.MESSAGE_DELETE, this.handleDispose);
|
||||||
this.client.on(Events.MESSAGE_BULK_DELETE, bulkDeleteListener);
|
this.client.on(Events.MESSAGE_BULK_DELETE, bulkDeleteListener);
|
||||||
@@ -55,7 +55,7 @@ class MessageCollector extends Collector {
|
|||||||
this.client.removeListener(Events.MESSAGE_BULK_DELETE, bulkDeleteListener);
|
this.client.removeListener(Events.MESSAGE_BULK_DELETE, bulkDeleteListener);
|
||||||
this.client.removeListener(Events.CHANNEL_DELETE, this._handleChannelDeletion);
|
this.client.removeListener(Events.CHANNEL_DELETE, this._handleChannelDeletion);
|
||||||
this.client.removeListener(Events.GUILD_DELETE, this._handleGuildDeletion);
|
this.client.removeListener(Events.GUILD_DELETE, this._handleGuildDeletion);
|
||||||
if (this.client.getMaxListeners() !== 0) this.client.setMaxListeners(this.client.getMaxListeners() - 1);
|
this.client.decrementMaxListeners();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ class ReactionCollector extends Collector {
|
|||||||
this._handleGuildDeletion = this._handleGuildDeletion.bind(this);
|
this._handleGuildDeletion = this._handleGuildDeletion.bind(this);
|
||||||
this._handleMessageDeletion = this._handleMessageDeletion.bind(this);
|
this._handleMessageDeletion = this._handleMessageDeletion.bind(this);
|
||||||
|
|
||||||
if (this.client.getMaxListeners() !== 0) this.client.setMaxListeners(this.client.getMaxListeners() + 1);
|
this.client.incrementMaxListeners();
|
||||||
this.client.on(Events.MESSAGE_REACTION_ADD, this.handleCollect);
|
this.client.on(Events.MESSAGE_REACTION_ADD, this.handleCollect);
|
||||||
this.client.on(Events.MESSAGE_REACTION_REMOVE, this.handleDispose);
|
this.client.on(Events.MESSAGE_REACTION_REMOVE, this.handleDispose);
|
||||||
this.client.on(Events.MESSAGE_REACTION_REMOVE_ALL, this.empty);
|
this.client.on(Events.MESSAGE_REACTION_REMOVE_ALL, this.empty);
|
||||||
@@ -64,7 +64,7 @@ class ReactionCollector extends Collector {
|
|||||||
this.client.removeListener(Events.MESSAGE_DELETE, this._handleMessageDeletion);
|
this.client.removeListener(Events.MESSAGE_DELETE, this._handleMessageDeletion);
|
||||||
this.client.removeListener(Events.CHANNEL_DELETE, this._handleChannelDeletion);
|
this.client.removeListener(Events.CHANNEL_DELETE, this._handleChannelDeletion);
|
||||||
this.client.removeListener(Events.GUILD_DELETE, this._handleGuildDeletion);
|
this.client.removeListener(Events.GUILD_DELETE, this._handleGuildDeletion);
|
||||||
if (this.client.getMaxListeners() !== 0) this.client.setMaxListeners(this.client.getMaxListeners() - 1);
|
this.client.decrementMaxListeners();
|
||||||
});
|
});
|
||||||
|
|
||||||
this.on('collect', (reaction, user) => {
|
this.on('collect', (reaction, user) => {
|
||||||
|
|||||||
2
typings/index.d.ts
vendored
2
typings/index.d.ts
vendored
@@ -96,6 +96,8 @@ declare module 'discord.js' {
|
|||||||
private _immediates: Set<NodeJS.Immediate>;
|
private _immediates: Set<NodeJS.Immediate>;
|
||||||
private readonly api: object;
|
private readonly api: object;
|
||||||
private rest: object;
|
private rest: object;
|
||||||
|
private decrementMaxListeners(): void;
|
||||||
|
private incrementMaxListeners(): void;
|
||||||
|
|
||||||
public options: ClientOptions;
|
public options: ClientOptions;
|
||||||
public clearInterval(interval: NodeJS.Timer): void;
|
public clearInterval(interval: NodeJS.Timer): void;
|
||||||
|
|||||||
Reference in New Issue
Block a user