mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-19 21:13:30 +01:00
Add validation for all non-ws client options
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -23,23 +23,16 @@ class Client extends EventEmitter {
|
|||||||
constructor(options) {
|
constructor(options) {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
|
// Obtain shard details from environment
|
||||||
|
if (!options.shardId && 'SHARD_ID' in process.env) options.shardId = Number(process.env.SHARD_ID);
|
||||||
|
if (!options.shardCount && 'SHARD_COUNT' in process.env) options.shardCount = Number(process.env.SHARD_COUNT);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The options the client was instantiated with
|
* The options the client was instantiated with
|
||||||
* @type {ClientOptions}
|
* @type {ClientOptions}
|
||||||
*/
|
*/
|
||||||
this.options = mergeDefault(Constants.DefaultOptions, options);
|
this.options = mergeDefault(Constants.DefaultOptions, options);
|
||||||
|
this._validateOptions();
|
||||||
if (!this.options.shardId && 'SHARD_ID' in process.env) {
|
|
||||||
this.options.shardId = Number(process.env.SHARD_ID);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!this.options.shardCount && 'SHARD_COUNT' in process.env) {
|
|
||||||
this.options.shardCount = Number(process.env.SHARD_COUNT);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(this.options.disabledEvents instanceof Array)) {
|
|
||||||
throw new TypeError('The disabledEvents client option must be an array.');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The REST manager of the client
|
* The REST manager of the client
|
||||||
@@ -295,7 +288,7 @@ class Client extends EventEmitter {
|
|||||||
* or -1 if the message cache lifetime is unlimited
|
* or -1 if the message cache lifetime is unlimited
|
||||||
*/
|
*/
|
||||||
sweepMessages(lifetime = this.options.messageCacheLifetime) {
|
sweepMessages(lifetime = this.options.messageCacheLifetime) {
|
||||||
if (typeof lifetime !== 'number' || isNaN(lifetime)) throw new TypeError('Lifetime must be a number.');
|
if (typeof lifetime !== 'number' || isNaN(lifetime)) throw new TypeError('The lifetime must be a number.');
|
||||||
if (lifetime <= 0) {
|
if (lifetime <= 0) {
|
||||||
this.emit('debug', 'Didn\'t sweep messages - lifetime is unlimited');
|
this.emit('debug', 'Didn\'t sweep messages - lifetime is unlimited');
|
||||||
return -1;
|
return -1;
|
||||||
@@ -358,6 +351,39 @@ class Client extends EventEmitter {
|
|||||||
_eval(script) {
|
_eval(script) {
|
||||||
return eval(script);
|
return eval(script);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_validateOptions(options = this.options) {
|
||||||
|
if (typeof options.shardCount !== 'number' || isNaN(options.shardCount)) {
|
||||||
|
throw new TypeError('The shardCount option must be a number.');
|
||||||
|
}
|
||||||
|
if (typeof options.shardId !== 'number' || isNaN(options.shardId)) {
|
||||||
|
throw new TypeError('The shardId option must be a number.');
|
||||||
|
}
|
||||||
|
if (options.shardCount < 0) throw new RangeError('The shardCount option must be at least 0.');
|
||||||
|
if (options.shardId < 0) throw new RangeError('The shardId option must be at least 0.');
|
||||||
|
if (options.shardId !== 0 && options.shardId >= options.shardCount) {
|
||||||
|
throw new RangeError('The shardId option must be less than shardCount.');
|
||||||
|
}
|
||||||
|
if (typeof options.maxMessageCache !== 'number' || isNaN(options.maxMessageCache)) {
|
||||||
|
throw new TypeError('The maxMessageCache option must be a number.');
|
||||||
|
}
|
||||||
|
if (typeof options.messageCacheLifetime !== 'number' || isNaN(options.messageCacheLifetime)) {
|
||||||
|
throw new TypeError('The messageCacheLifetime option must be a number.');
|
||||||
|
}
|
||||||
|
if (typeof options.messageSweepInterval !== 'number' || isNaN(options.messageSweepInterval)) {
|
||||||
|
throw new TypeError('The messageSweepInterval option must be a number.');
|
||||||
|
}
|
||||||
|
if (typeof options.fetchAllMembers !== 'boolean') {
|
||||||
|
throw new TypeError('The fetchAllMembers option must be a boolean.');
|
||||||
|
}
|
||||||
|
if (typeof options.disableEveryone !== 'boolean') {
|
||||||
|
throw new TypeError('The disableEveryone option must be a boolean.');
|
||||||
|
}
|
||||||
|
if (typeof options.restWsBridgeTimeout !== 'number' || isNaN(options.restWsBridgeTimeout)) {
|
||||||
|
throw new TypeError('The restWsBridgeTimeout option must be a number.');
|
||||||
|
}
|
||||||
|
if (!(options.disabledEvents instanceof Array)) throw new TypeError('The disabledEvents option must be an Array.');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = Client;
|
module.exports = Client;
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ exports.Package = require('../../package.json');
|
|||||||
* @property {number} [messageCacheLifetime=0] How long until a message should be uncached by the message sweeping
|
* @property {number} [messageCacheLifetime=0] How long until a message should be uncached by the message sweeping
|
||||||
* (in seconds, 0 for forever)
|
* (in seconds, 0 for forever)
|
||||||
* @property {number} [messageSweepInterval=0] How frequently to remove messages from the cache that are older than
|
* @property {number} [messageSweepInterval=0] How frequently to remove messages from the cache that are older than
|
||||||
* the max message lifetime (in seconds, 0 for never)
|
* the message cache lifetime (in seconds, 0 for never)
|
||||||
* @property {boolean} [fetchAllMembers=false] Whether to cache all guild members and users upon startup, as well as
|
* @property {boolean} [fetchAllMembers=false] Whether to cache all guild members and users upon startup, as well as
|
||||||
* upon joining a guild
|
* upon joining a guild
|
||||||
* @property {boolean} [disableEveryone=false] Default value for MessageOptions.disableEveryone
|
* @property {boolean} [disableEveryone=false] Default value for MessageOptions.disableEveryone
|
||||||
|
|||||||
Reference in New Issue
Block a user