refactor: use static fields (#7701)

* refactor: use static fields

* chore: refactor missed areas

* chore: remove memberof docs

* chore: make type changes
This commit is contained in:
Suneet Tipirneni
2022-03-23 21:38:05 -04:00
committed by GitHub
parent 72577c4bfd
commit e805777a7a
21 changed files with 336 additions and 358 deletions

View File

@@ -3,10 +3,10 @@
"extends": ["eslint:recommended", "plugin:prettier/recommended"],
"plugins": ["import"],
"parserOptions": {
"ecmaVersion": 2021
"ecmaVersion": 2022
},
"env": {
"es2021": true,
"es2022": true,
"node": true
},
"rules": {

View File

@@ -57,6 +57,9 @@ const Targets = {
* Audit logs entries are held in this class.
*/
class GuildAuditLogs {
static Targets = Targets;
static Entry = GuildAuditLogsEntry;
constructor(guild, data) {
if (data.users) for (const user of data.users) guild.client.users._add(user);
if (data.threads) for (const thread of data.threads) guild.client.channels._add(thread, guild);
@@ -522,7 +525,4 @@ class GuildAuditLogsEntry {
}
}
GuildAuditLogs.Targets = Targets;
GuildAuditLogs.Entry = GuildAuditLogsEntry;
module.exports = GuildAuditLogs;

View File

@@ -120,11 +120,11 @@ class GuildChannel extends Channel {
// Handle empty overwrite
if (
(!channelVal &&
parentVal.deny.bitfield === PermissionsBitField.defaultBit &&
parentVal.allow.bitfield === PermissionsBitField.defaultBit) ||
parentVal.deny.bitfield === PermissionsBitField.DefaultBit &&
parentVal.allow.bitfield === PermissionsBitField.DefaultBit) ||
(!parentVal &&
channelVal.deny.bitfield === PermissionsBitField.defaultBit &&
channelVal.allow.bitfield === PermissionsBitField.defaultBit)
channelVal.deny.bitfield === PermissionsBitField.DefaultBit &&
channelVal.allow.bitfield === PermissionsBitField.DefaultBit)
) {
return true;
}
@@ -210,12 +210,12 @@ class GuildChannel extends Channel {
const overwrites = this.overwritesFor(member, true, roles);
return permissions
.remove(overwrites.everyone?.deny ?? PermissionsBitField.defaultBit)
.add(overwrites.everyone?.allow ?? PermissionsBitField.defaultBit)
.remove(overwrites.roles.length > 0 ? overwrites.roles.map(role => role.deny) : PermissionsBitField.defaultBit)
.add(overwrites.roles.length > 0 ? overwrites.roles.map(role => role.allow) : PermissionsBitField.defaultBit)
.remove(overwrites.member?.deny ?? PermissionsBitField.defaultBit)
.add(overwrites.member?.allow ?? PermissionsBitField.defaultBit)
.remove(overwrites.everyone?.deny ?? PermissionsBitField.DefaultBit)
.add(overwrites.everyone?.allow ?? PermissionsBitField.DefaultBit)
.remove(overwrites.roles.length > 0 ? overwrites.roles.map(role => role.deny) : PermissionsBitField.DefaultBit)
.add(overwrites.roles.length > 0 ? overwrites.roles.map(role => role.allow) : PermissionsBitField.DefaultBit)
.remove(overwrites.member?.deny ?? PermissionsBitField.DefaultBit)
.add(overwrites.member?.allow ?? PermissionsBitField.DefaultBit)
.freeze();
}
@@ -235,10 +235,10 @@ class GuildChannel extends Channel {
const roleOverwrites = this.permissionOverwrites.cache.get(role.id);
return role.permissions
.remove(everyoneOverwrites?.deny ?? PermissionsBitField.defaultBit)
.add(everyoneOverwrites?.allow ?? PermissionsBitField.defaultBit)
.remove(roleOverwrites?.deny ?? PermissionsBitField.defaultBit)
.add(roleOverwrites?.allow ?? PermissionsBitField.defaultBit)
.remove(everyoneOverwrites?.deny ?? PermissionsBitField.DefaultBit)
.add(everyoneOverwrites?.allow ?? PermissionsBitField.DefaultBit)
.remove(roleOverwrites?.deny ?? PermissionsBitField.DefaultBit)
.add(roleOverwrites?.allow ?? PermissionsBitField.DefaultBit)
.freeze();
}

View File

@@ -11,6 +11,12 @@ const Events = require('../util/Events');
* @extends {Base}
*/
class GuildTemplate extends Base {
/**
* Regular expression that globally matches guild template links
* @type {RegExp}
*/
static GuildTemplatesPattern = /discord(?:app)?\.(?:com\/template|new)\/([\w-]{2,255})/gi;
constructor(client, data) {
super(client);
this._patch(data);
@@ -230,10 +236,4 @@ class GuildTemplate extends Base {
}
}
/**
* Regular expression that globally matches guild template links
* @type {RegExp}
*/
GuildTemplate.GUILD_TEMPLATES_PATTERN = /discord(?:app)?\.(?:com\/template|new)\/([\w-]{2,255})/gi;
module.exports = GuildTemplate;

View File

@@ -12,6 +12,12 @@ const { Error } = require('../errors');
* @extends {Base}
*/
class Invite extends Base {
/**
* Regular expression that globally matches Discord invite links
* @type {RegExp}
*/
static InvitesPattern = /discord(?:(?:app)?\.com\/invite|\.gg(?:\/invite)?)\/([\w-]{2,255})/gi;
constructor(client, data) {
super(client);
this._patch(data);
@@ -308,10 +314,4 @@ class Invite extends Base {
}
}
/**
* Regular expression that globally matches Discord invite links
* @type {RegExp}
*/
Invite.INVITES_PATTERN = /discord(?:(?:app)?\.com\/invite|\.gg(?:\/invite)?)\/([\w-]{2,255})/gi;
module.exports = Invite;

View File

@@ -623,7 +623,7 @@ class Message extends Base {
get crosspostable() {
const bitfield =
PermissionFlagsBits.SendMessages |
(this.author.id === this.client.user.id ? PermissionsBitField.defaultBit : PermissionFlagsBits.ManageMessages);
(this.author.id === this.client.user.id ? PermissionsBitField.DefaultBit : PermissionFlagsBits.ManageMessages);
const { channel } = this;
return Boolean(
channel?.type === ChannelType.GuildNews &&

View File

@@ -7,6 +7,30 @@ const Util = require('../util/Util');
* Keeps track of mentions in a {@link Message}.
*/
class MessageMentions {
/**
* Regular expression that globally matches `@everyone` and `@here`
* @type {RegExp}
*/
static EveryonePattern = /@(everyone|here)/g;
/**
* Regular expression that globally matches user mentions like `<@81440962496172032>`
* @type {RegExp}
*/
static UsersPattern = /<@!?(\d{17,19})>/g;
/**
* Regular expression that globally matches role mentions like `<@&297577916114403338>`
* @type {RegExp}
*/
static RolesPattern = /<@&(\d{17,19})>/g;
/**
* Regular expression that globally matches channel mentions like `<#222079895583457280>`
* @type {RegExp}
*/
static ChannelsPattern = /<#(\d{17,19})>/g;
constructor(message, users, roles, everyone, crosspostedChannels, repliedUser) {
/**
* The client the message is from
@@ -158,7 +182,7 @@ class MessageMentions {
if (this._channels) return this._channels;
this._channels = new Collection();
let matches;
while ((matches = this.constructor.CHANNELS_PATTERN.exec(this._content)) !== null) {
while ((matches = this.constructor.ChannelsPattern.exec(this._content)) !== null) {
const chan = this.client.channels.cache.get(matches[1]);
if (chan) this._channels.set(chan.id, chan);
}
@@ -212,28 +236,4 @@ class MessageMentions {
}
}
/**
* Regular expression that globally matches `@everyone` and `@here`
* @type {RegExp}
*/
MessageMentions.EVERYONE_PATTERN = /@(everyone|here)/g;
/**
* Regular expression that globally matches user mentions like `<@81440962496172032>`
* @type {RegExp}
*/
MessageMentions.USERS_PATTERN = /<@!?(\d{17,19})>/g;
/**
* Regular expression that globally matches role mentions like `<@&297577916114403338>`
* @type {RegExp}
*/
MessageMentions.ROLES_PATTERN = /<@&(\d{17,19})>/g;
/**
* Regular expression that globally matches channel mentions like `<#222079895583457280>`
* @type {RegExp}
*/
MessageMentions.CHANNELS_PATTERN = /<#(\d{17,19})>/g;
module.exports = MessageMentions;

View File

@@ -175,8 +175,8 @@ class PermissionOverwrites extends Base {
return {
id: overwrite.id,
type: overwrite.type,
allow: PermissionsBitField.resolve(overwrite.allow ?? PermissionsBitField.defaultBit).toString(),
deny: PermissionsBitField.resolve(overwrite.deny ?? PermissionsBitField.defaultBit).toString(),
allow: PermissionsBitField.resolve(overwrite.allow ?? PermissionsBitField.DefaultBit).toString(),
deny: PermissionsBitField.resolve(overwrite.deny ?? PermissionsBitField.DefaultBit).toString(),
};
}
@@ -187,8 +187,8 @@ class PermissionOverwrites extends Base {
return {
id: userOrRole.id,
type,
allow: PermissionsBitField.resolve(overwrite.allow ?? PermissionsBitField.defaultBit).toString(),
deny: PermissionsBitField.resolve(overwrite.deny ?? PermissionsBitField.defaultBit).toString(),
allow: PermissionsBitField.resolve(overwrite.allow ?? PermissionsBitField.DefaultBit).toString(),
deny: PermissionsBitField.resolve(overwrite.deny ?? PermissionsBitField.DefaultBit).toString(),
};
}
}

View File

@@ -7,7 +7,13 @@ const BitField = require('./BitField');
* Data structure that makes it easy to interact with an {@link Activity#flags} bitfield.
* @extends {BitField}
*/
class ActivityFlagsBitField extends BitField {}
class ActivityFlagsBitField extends BitField {
/**
* Numeric activity flags.
* @type {ActivityFlags}
*/
static Flags = ActivityFlags;
}
/**
* @name ActivityFlagsBitField
@@ -16,10 +22,4 @@ class ActivityFlagsBitField extends BitField {}
* @param {BitFieldResolvable} [bits=0] Bit(s) to read from
*/
/**
* Numeric activity flags.
* @type {ActivityFlags}
*/
ActivityFlagsBitField.Flags = ActivityFlags;
module.exports = ActivityFlagsBitField;

View File

@@ -7,7 +7,13 @@ const BitField = require('./BitField');
* Data structure that makes it easy to interact with a {@link ClientApplication#flags} bitfield.
* @extends {BitField}
*/
class ApplicationFlagsBitField extends BitField {}
class ApplicationFlagsBitField extends BitField {
/**
* Numeric application flags. All available properties:
* @type {ApplicationFlags}
*/
static Flags = ApplicationFlags;
}
/**
* @name ApplicationFlagsBitField
@@ -16,16 +22,4 @@ class ApplicationFlagsBitField extends BitField {}
* @param {BitFieldResolvable} [bits=0] Bit(s) to read from
*/
/**
* Bitfield of the packed bits
* @type {number}
* @name ApplicationFlagsBitField#bitfield
*/
/**
* Numeric application flags. All available properties:
* @type {ApplicationFlags}
*/
ApplicationFlagsBitField.Flags = ApplicationFlags;
module.exports = ApplicationFlagsBitField;

View File

@@ -7,9 +7,23 @@ const { RangeError } = require('../errors');
*/
class BitField {
/**
* @param {BitFieldResolvable} [bits=this.constructor.defaultBit] Bit(s) to read from
* Numeric bitfield flags.
* <info>Defined in extension classes</info>
* @type {Object}
* @abstract
*/
constructor(bits = this.constructor.defaultBit) {
static Flags = {};
/**
* @type {number|bigint}
* @private
*/
static DefaultBit = 0;
/**
* @param {BitFieldResolvable} [bits=this.constructor.DefaultBit] Bit(s) to read from
*/
constructor(bits = this.constructor.DefaultBit) {
/**
* Bitfield of the packed bits
* @type {number|bigint}
@@ -23,7 +37,7 @@ class BitField {
* @returns {boolean}
*/
any(bit) {
return (this.bitfield & this.constructor.resolve(bit)) !== this.constructor.defaultBit;
return (this.bitfield & this.constructor.resolve(bit)) !== this.constructor.DefaultBit;
}
/**
@@ -69,7 +83,7 @@ class BitField {
* @returns {BitField} These bits or new BitField if the instance is frozen.
*/
add(...bits) {
let total = this.constructor.defaultBit;
let total = this.constructor.DefaultBit;
for (const bit of bits) {
total |= this.constructor.resolve(bit);
}
@@ -84,7 +98,7 @@ class BitField {
* @returns {BitField} These bits or new BitField if the instance is frozen.
*/
remove(...bits) {
let total = this.constructor.defaultBit;
let total = this.constructor.DefaultBit;
for (const bit of bits) {
total |= this.constructor.resolve(bit);
}
@@ -141,30 +155,16 @@ class BitField {
* @returns {number|bigint}
*/
static resolve(bit) {
const { defaultBit } = this;
if (typeof defaultBit === typeof bit && bit >= defaultBit) return bit;
const { DefaultBit } = this;
if (typeof DefaultBit === typeof bit && bit >= DefaultBit) return bit;
if (bit instanceof BitField) return bit.bitfield;
if (Array.isArray(bit)) return bit.map(p => this.resolve(p)).reduce((prev, p) => prev | p, defaultBit);
if (Array.isArray(bit)) return bit.map(p => this.resolve(p)).reduce((prev, p) => prev | p, DefaultBit);
if (typeof bit === 'string') {
if (typeof this.Flags[bit] !== 'undefined') return this.Flags[bit];
if (!isNaN(bit)) return typeof defaultBit === 'bigint' ? BigInt(bit) : Number(bit);
if (!isNaN(bit)) return typeof DefaultBit === 'bigint' ? BigInt(bit) : Number(bit);
}
throw new RangeError('BITFIELD_INVALID', bit);
}
}
/**
* Numeric bitfield flags.
* <info>Defined in extension classes</info>
* @type {Object}
* @abstract
*/
BitField.Flags = {};
/**
* @type {number|bigint}
* @private
*/
BitField.defaultBit = 0;
module.exports = BitField;

View File

@@ -43,7 +43,7 @@ class DataResolver extends null {
* @returns {string}
*/
static resolveInviteCode(data) {
return this.resolveCode(data, Invite.INVITES_PATTERN);
return this.resolveCode(data, Invite.InvitesPattern);
}
/**
@@ -53,7 +53,7 @@ class DataResolver extends null {
*/
static resolveGuildTemplateCode(data) {
const GuildTemplate = require('../structures/GuildTemplate');
return this.resolveCode(data, GuildTemplate.GUILD_TEMPLATES_PATTERN);
return this.resolveCode(data, GuildTemplate.GuildTemplatesPattern);
}
/**

View File

@@ -24,185 +24,167 @@ const {
/**
* Contains various Discord-specific functions for formatting messages.
*/
class Formatters extends null {}
class Formatters extends null {
/**
* Formats the content into a block quote. This needs to be at the start of the line for Discord to format it.
* @method blockQuote
* @param {string} content The content to wrap.
* @returns {string}
*/
static blockQuote = blockQuote;
/**
* Formats the content into a block quote. This needs to be at the start of the line for Discord to format it.
* @method blockQuote
* @memberof Formatters
* @param {string} content The content to wrap.
* @returns {string}
*/
Formatters.blockQuote = blockQuote;
/**
* Formats the content into bold text.
* @method bold
* @param {string} content The content to wrap.
* @returns {string}
*/
static bold = bold;
/**
* Formats the content into bold text.
* @method bold
* @memberof Formatters
* @param {string} content The content to wrap.
* @returns {string}
*/
Formatters.bold = bold;
/**
* Formats a channel id into a channel mention.
* @method channelMention
* @param {string} channelId The channel id to format.
* @returns {string}
*/
static channelMention = channelMention;
/**
* Formats a channel id into a channel mention.
* @method channelMention
* @memberof Formatters
* @param {string} channelId The channel id to format.
* @returns {string}
*/
Formatters.channelMention = channelMention;
/**
* Wraps the content inside a code block with an optional language.
* @method codeBlock
* @param {string} contentOrLanguage The language to use, content if a second parameter isn't provided.
* @param {string} [content] The content to wrap.
* @returns {string}
*/
static codeBlock = codeBlock;
/**
* Wraps the content inside a code block with an optional language.
* @method codeBlock
* @memberof Formatters
* @param {string} contentOrLanguage The language to use, content if a second parameter isn't provided.
* @param {string} [content] The content to wrap.
* @returns {string}
*/
Formatters.codeBlock = codeBlock;
/**
* Formats an emoji id into a fully qualified emoji identifier
* @method formatEmoji
* @param {string} emojiId The emoji id to format.
* @param {boolean} [animated] Whether the emoji is animated or not. Defaults to `false`
* @returns {string}
*/
static formatEmoji = formatEmoji;
/**
* Formats an emoji id into a fully qualified emoji identifier
* @method formatEmoji
* @memberof Formatters
* @param {string} emojiId The emoji id to format.
* @param {boolean} [animated] Whether the emoji is animated or not. Defaults to `false`
* @returns {string}
*/
Formatters.formatEmoji = formatEmoji;
/**
* Wraps the URL into `<>`, which stops it from embedding.
* @method hideLinkEmbed
* @param {string} content The content to wrap.
* @returns {string}
*/
static hideLinkEmbed = hideLinkEmbed;
/**
* Wraps the URL into `<>`, which stops it from embedding.
* @method hideLinkEmbed
* @memberof Formatters
* @param {string} content The content to wrap.
* @returns {string}
*/
Formatters.hideLinkEmbed = hideLinkEmbed;
/**
* Formats the content and the URL into a masked URL with an optional title.
* @method hyperlink
* @param {string} content The content to display.
* @param {string} url The URL the content links to.
* @param {string} [title] The title shown when hovering on the masked link.
* @returns {string}
*/
static hyperlink = hyperlink;
/**
* Formats the content and the URL into a masked URL with an optional title.
* @method hyperlink
* @memberof Formatters
* @param {string} content The content to display.
* @param {string} url The URL the content links to.
* @param {string} [title] The title shown when hovering on the masked link.
* @returns {string}
*/
Formatters.hyperlink = hyperlink;
/**
* Wraps the content inside \`backticks\`, which formats it as inline code.
* @method inlineCode
* @param {string} content The content to wrap.
* @returns {string}
*/
static inlineCode = inlineCode;
/**
* Wraps the content inside \`backticks\`, which formats it as inline code.
* @method inlineCode
* @memberof Formatters
* @param {string} content The content to wrap.
* @returns {string}
*/
Formatters.inlineCode = inlineCode;
/**
* Formats the content into italic text.
* @method italic
* @param {string} content The content to wrap.
* @returns {string}
*/
static italic = italic;
/**
* Formats the content into italic text.
* @method italic
* @memberof Formatters
* @param {string} content The content to wrap.
* @returns {string}
*/
Formatters.italic = italic;
/**
* Formats a user id into a member-nickname mention.
* @method memberNicknameMention
* @param {string} memberId The user id to format.
* @returns {string}
*/
static memberNicknameMention = memberNicknameMention;
/**
* Formats a user id into a member-nickname mention.
* @method memberNicknameMention
* @memberof Formatters
* @param {string} memberId The user id to format.
* @returns {string}
*/
Formatters.memberNicknameMention = memberNicknameMention;
/**
* Formats the content into a quote. This needs to be at the start of the line for Discord to format it.
* @method quote
* @param {string} content The content to wrap.
* @returns {string}
*/
static quote = quote;
/**
* Formats the content into a quote. This needs to be at the start of the line for Discord to format it.
* @method quote
* @memberof Formatters
* @param {string} content The content to wrap.
* @returns {string}
*/
Formatters.quote = quote;
/**
* Formats a role id into a role mention.
* @method roleMention
* @param {string} roleId The role id to format.
* @returns {string}
*/
static roleMention = roleMention;
/**
* Formats a role id into a role mention.
* @method roleMention
* @memberof Formatters
* @param {string} roleId The role id to format.
* @returns {string}
*/
Formatters.roleMention = roleMention;
/**
* Formats the content into spoiler text.
* @method spoiler
* @param {string} content The content to spoiler.
* @returns {string}
*/
static spoiler = spoiler;
/**
* Formats the content into spoiler text.
* @method spoiler
* @memberof Formatters
* @param {string} content The content to spoiler.
* @returns {string}
*/
Formatters.spoiler = spoiler;
/**
* Formats the content into strike-through text.
* @method strikethrough
* @param {string} content The content to wrap.
* @returns {string}
*/
static strikethrough = strikethrough;
/**
* Formats the content into strike-through text.
* @method strikethrough
* @memberof Formatters
* @param {string} content The content to wrap.
* @returns {string}
*/
Formatters.strikethrough = strikethrough;
/**
* Formats a date into a short date-time string.
* @method time
* @param {number|Date} [date] The date to format.
* @param {TimestampStylesString} [style] The style to use.
* @returns {string}
*/
static time = time;
/**
* Formats a date into a short date-time string.
* @method time
* @memberof Formatters
* @param {number|Date} [date] The date to format.
* @param {TimestampStylesString} [style] The style to use.
* @returns {string}
*/
Formatters.time = time;
/**
* A message formatting timestamp style, as defined in
* [here](https://discord.com/developers/docs/reference#message-formatting-timestamp-styles).
* * `t` Short time format, consisting of hours and minutes, e.g. 16:20.
* * `T` Long time format, consisting of hours, minutes, and seconds, e.g. 16:20:30.
* * `d` Short date format, consisting of day, month, and year, e.g. 20/04/2021.
* * `D` Long date format, consisting of day, month, and year, e.g. 20 April 2021.
* * `f` Short date-time format, consisting of short date and short time formats, e.g. 20 April 2021 16:20.
* * `F` Long date-time format, consisting of long date and short time formats, e.g. Tuesday, 20 April 2021 16:20.
* * `R` Relative time format, consisting of a relative duration format, e.g. 2 months ago.
* @typedef {string} TimestampStylesString
*/
/**
* A message formatting timestamp style, as defined in
* [here](https://discord.com/developers/docs/reference#message-formatting-timestamp-styles).
* * `t` Short time format, consisting of hours and minutes, e.g. 16:20.
* * `T` Long time format, consisting of hours, minutes, and seconds, e.g. 16:20:30.
* * `d` Short date format, consisting of day, month, and year, e.g. 20/04/2021.
* * `D` Long date format, consisting of day, month, and year, e.g. 20 April 2021.
* * `f` Short date-time format, consisting of short date and short time formats, e.g. 20 April 2021 16:20.
* * `F` Long date-time format, consisting of long date and short time formats, e.g. Tuesday, 20 April 2021 16:20.
* * `R` Relative time format, consisting of a relative duration format, e.g. 2 months ago.
* @typedef {string} TimestampStylesString
*/
/**
* The message formatting timestamp
* [styles](https://discord.com/developers/docs/reference#message-formatting-timestamp-styles) supported by Discord.
* @type {Object<string, TimestampStylesString>}
*/
static TimestampStyles = TimestampStyles;
/**
* The message formatting timestamp
* [styles](https://discord.com/developers/docs/reference#message-formatting-timestamp-styles) supported by Discord.
* @memberof Formatters
* @type {Object<string, TimestampStylesString>}
*/
Formatters.TimestampStyles = TimestampStyles;
/**
* Formats the content into underscored text.
* @method underscore
* @param {string} content The content to wrap.
* @returns {string}
*/
static underscore = underscore;
/**
* Formats the content into underscored text.
* @method underscore
* @memberof Formatters
* @param {string} content The content to wrap.
* @returns {string}
*/
Formatters.underscore = underscore;
/**
* Formats a user id into a user mention.
* @method userMention
* @memberof Formatters
* @param {string} userId The user id to format.
* @returns {string}
*/
Formatters.userMention = userMention;
/**
* Formats a user id into a user mention.
* @method userMention
* @param {string} userId The user id to format.
* @returns {string}
*/
static userMention = userMention;
}
module.exports = Formatters;

View File

@@ -6,7 +6,13 @@ const BitField = require('./BitField');
* Data structure that makes it easy to calculate intents.
* @extends {BitField}
*/
class IntentsBitField extends BitField {}
class IntentsBitField extends BitField {
/**
* Numeric WebSocket intents
* @type {GatewayIntentBits}
*/
static Flags = GatewayIntentBits;
}
/**
* @name IntentsBitField
@@ -24,10 +30,4 @@ class IntentsBitField extends BitField {}
* @typedef {string|number|IntentsBitField|IntentsResolvable[]} IntentsResolvable
*/
/**
* Numeric WebSocket intents
* @type {GatewayIntentBits}
*/
IntentsBitField.Flags = GatewayIntentBits;
module.exports = IntentsBitField;

View File

@@ -7,7 +7,13 @@ const BitField = require('./BitField');
* Data structure that makes it easy to interact with a {@link Message#flags} bitfield.
* @extends {BitField}
*/
class MessageFlagsBitField extends BitField {}
class MessageFlagsBitField extends BitField {
/**
* Numeric message flags.
* @type {MessageFlags}
*/
static Flags = MessageFlags;
}
/**
* @name MessageFlagsBitField
@@ -22,10 +28,4 @@ class MessageFlagsBitField extends BitField {}
* @name MessageFlagsBitField#bitfield
*/
/**
* Numeric message flags.
* @type {MessageFlags}
*/
MessageFlagsBitField.Flags = MessageFlags;
module.exports = MessageFlagsBitField;

View File

@@ -74,11 +74,11 @@ class Options extends null {
return {
waitGuildTimeout: 15_000,
shardCount: 1,
makeCache: this.cacheWithLimits(this.defaultMakeCacheSettings),
makeCache: this.cacheWithLimits(this.DefaultMakeCacheSettings),
partials: [],
failIfNotExists: true,
presence: {},
sweepers: this.defaultSweeperSettings,
sweepers: this.DefaultSweeperSettings,
ws: {
large_threshold: 50,
compress: false,
@@ -153,30 +153,32 @@ class Options extends null {
* * `GuildChannelManager` - Sweep archived threads
* * `ThreadManager` - Sweep archived threads
* <info>If you want to keep default behavior and add on top of it you can use this object and add on to it, e.g.
* `makeCache: Options.cacheWithLimits({ ...Options.defaultMakeCacheSettings, ReactionManager: 0 })`</info>
* `makeCache: Options.cacheWithLimits({ ...Options.DefaultMakeCacheSettings, ReactionManager: 0 })`</info>
* @type {Object<string, LimitedCollectionOptions|number>}
*/
static get defaultMakeCacheSettings() {
static get DefaultMakeCacheSettings() {
return {
MessageManager: 200,
};
}
}
/**
* The default settings passed to {@link Options.sweepers} (for v14).
* The sweepers that this changes are:
* * `threads` - Sweep archived threads every hour, removing those archived more than 4 hours ago
* <info>If you want to keep default behavior and add on top of it you can use this object and add on to it, e.g.
* `sweepers: { ...Options.defaultSweeperSettings, messages: { interval: 300, lifetime: 600 } })`</info>
* @type {SweeperOptions}
*/
Options.defaultSweeperSettings = {
threads: {
interval: 3600,
lifetime: 14400,
},
};
/**
* The default settings passed to {@link Options.sweepers} (for v14).
* The sweepers that this changes are:
* * `threads` - Sweep archived threads every hour, removing those archived more than 4 hours ago
* <info>If you want to keep default behavior and add on top of it you can use this object and add on to it, e.g.
* `sweepers: { ...Options.DefaultSweeperSettings, messages: { interval: 300, lifetime: 600 } })`</info>
* @type {SweeperOptions}
*/
static get DefaultSweeperSettings() {
return {
threads: {
interval: 3600,
lifetime: 14400,
},
};
}
}
module.exports = Options;

View File

@@ -10,6 +10,34 @@ const BitField = require('./BitField');
* @extends {BitField}
*/
class PermissionsBitField extends BitField {
/**
* Numeric permission flags.
* @type {PermissionFlagsBits}
* @see {@link https://discord.com/developers/docs/topics/permissions#permissions-bitwise-permission-flags}
*/
static Flags = PermissionFlagsBits;
/**
* Bitfield representing every permission combined
* @type {bigint}
*/
static All = Object.values(PermissionFlagsBits).reduce((all, p) => all | p, 0n);
/**
* Bitfield representing the default permissions for users
* @type {bigint}
*/
static Default = BigInt(104324673);
/**
* Bitfield representing the permissions required for moderators of stage channels
* @type {bigint}
*/
static StageModerator =
PermissionFlagsBits.ManageChannels | PermissionFlagsBits.MuteMembers | PermissionFlagsBits.MoveMembers;
static DefaultBit = BigInt(0);
/**
* Bitfield of the packed bits
* @type {bigint}
@@ -64,32 +92,4 @@ class PermissionsBitField extends BitField {
}
}
/**
* Numeric permission flags.
* @type {PermissionFlagsBits}
* @see {@link https://discord.com/developers/docs/topics/permissions#permissions-bitwise-permission-flags}
*/
PermissionsBitField.Flags = PermissionFlagsBits;
/**
* Bitfield representing every permission combined
* @type {bigint}
*/
PermissionsBitField.All = Object.values(PermissionFlagsBits).reduce((all, p) => all | p, 0n);
/**
* Bitfield representing the default permissions for users
* @type {bigint}
*/
PermissionsBitField.Default = BigInt(104324673);
/**
* Bitfield representing the permissions required for moderators of stage channels
* @type {bigint}
*/
PermissionsBitField.StageModerator =
PermissionFlagsBits.ManageChannels | PermissionFlagsBits.MuteMembers | PermissionFlagsBits.MoveMembers;
PermissionsBitField.defaultBit = BigInt(0);
module.exports = PermissionsBitField;

View File

@@ -9,7 +9,13 @@ const BitField = require('./BitField');
* and by setting their corresponding flags you are disabling them</info>
* @extends {BitField}
*/
class SystemChannelFlagsBitField extends BitField {}
class SystemChannelFlagsBitField extends BitField {
/**
* Numeric system channel flags.
* @type {GuildSystemChannelFlags}
*/
static Flags = GuildSystemChannelFlags;
}
/**
* @name SystemChannelFlagsBitField
@@ -33,10 +39,4 @@ class SystemChannelFlagsBitField extends BitField {}
* @typedef {string|number|SystemChannelFlagsBitField|SystemChannelFlagsResolvable[]} SystemChannelFlagsResolvable
*/
/**
* Numeric system channel flags.
* @type {GuildSystemChannelFlags}
*/
SystemChannelFlagsBitField.Flags = GuildSystemChannelFlags;
module.exports = SystemChannelFlagsBitField;

View File

@@ -6,7 +6,13 @@ const BitField = require('./BitField');
* Data structure that makes it easy to interact with a {@link ThreadMember#flags} bitfield.
* @extends {BitField}
*/
class ThreadMemberFlagsBitField extends BitField {}
class ThreadMemberFlagsBitField extends BitField {
/**
* Numeric thread member flags. There are currently no bitflags relevant to bots for this.
* @type {Object<string, number>}
*/
static Flags = {};
}
/**
* @name ThreadMemberFlagsBitField
@@ -21,10 +27,4 @@ class ThreadMemberFlagsBitField extends BitField {}
* @name ThreadMemberFlagsBitField#bitfield
*/
/**
* Numeric thread member flags. There are currently no bitflags relevant to bots for this.
* @type {Object<string, number>}
*/
ThreadMemberFlagsBitField.Flags = {};
module.exports = ThreadMemberFlagsBitField;

View File

@@ -7,7 +7,13 @@ const BitField = require('./BitField');
* Data structure that makes it easy to interact with a {@link User#flags} bitfield.
* @extends {BitField}
*/
class UserFlagsBitField extends BitField {}
class UserFlagsBitField extends BitField {
/**
* Numeric user flags.
* @type {UserFlags}
*/
static Flags = UserFlags;
}
/**
* @name UserFlagsBitField
@@ -22,10 +28,4 @@ class UserFlagsBitField extends BitField {}
* @name UserFlagsBitField#bitfield
*/
/**
* Numeric user flags.
* @type {UserFlags}
*/
UserFlagsBitField.Flags = UserFlags;
module.exports = UserFlagsBitField;

View File

@@ -774,8 +774,8 @@ export class ClientUser extends User {
export class Options extends null {
private constructor();
public static defaultMakeCacheSettings: CacheWithLimitsOptions;
public static defaultSweeperSettings: SweeperOptions;
public static get DefaultMakeCacheSettings(): CacheWithLimitsOptions;
public static get DefaultSweeperSettings(): SweeperOptions;
public static createDefault(): ClientOptions;
public static cacheWithLimits(settings?: CacheWithLimitsOptions): CacheFactory;
public static cacheEverything(): CacheFactory;
@@ -1356,7 +1356,7 @@ export class GuildTemplate extends Base {
public delete(): Promise<GuildTemplate>;
public edit(options?: EditGuildTemplateOptions): Promise<GuildTemplate>;
public sync(): Promise<GuildTemplate>;
public static GUILD_TEMPLATES_PATTERN: RegExp;
public static GuildTemplatesPattern: RegExp;
}
export class GuildPreviewEmoji extends BaseGuildEmoji {
@@ -1525,7 +1525,7 @@ export class Invite extends Base {
public delete(reason?: string): Promise<Invite>;
public toJSON(): unknown;
public toString(): string;
public static INVITES_PATTERN: RegExp;
public static InvitesPattern: RegExp;
/** @deprecated */
public stageInstance: InviteStageInstance | null;
public guildScheduledEvent: GuildScheduledEvent | null;
@@ -1773,10 +1773,10 @@ export class MessageMentions {
public crosspostedChannels: Collection<Snowflake, CrosspostedChannel>;
public toJSON(): unknown;
public static CHANNELS_PATTERN: RegExp;
public static EVERYONE_PATTERN: RegExp;
public static ROLES_PATTERN: RegExp;
public static USERS_PATTERN: RegExp;
public static ChannelsPattern: RegExp;
public static EveryonePattern: RegExp;
public static RolesPattern: RegExp;
public static UsersPattern: RegExp;
}
export class MessagePayload {