mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-12 01:23:31 +01:00
refactor: make Structure#deleted a getter to a WeakSet (#7074)
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
const Emoji = require('./Emoji');
|
||||
const { Emoji } = require('./Emoji');
|
||||
|
||||
/**
|
||||
* Parent class for {@link GuildEmoji} and {@link GuildPreviewEmoji}.
|
||||
|
||||
@@ -12,6 +12,13 @@ let VoiceChannel;
|
||||
const { ChannelTypes, ThreadChannelTypes, VoiceBasedChannelTypes } = require('../util/Constants');
|
||||
const SnowflakeUtil = require('../util/SnowflakeUtil');
|
||||
|
||||
/**
|
||||
* @type {WeakSet<Channel>}
|
||||
* @private
|
||||
* @internal
|
||||
*/
|
||||
const deletedChannels = new WeakSet();
|
||||
|
||||
/**
|
||||
* Represents any channel on Discord.
|
||||
* @extends {Base}
|
||||
@@ -28,12 +35,6 @@ class Channel extends Base {
|
||||
*/
|
||||
this.type = type ?? 'UNKNOWN';
|
||||
|
||||
/**
|
||||
* Whether the channel has been deleted
|
||||
* @type {boolean}
|
||||
*/
|
||||
this.deleted = false;
|
||||
|
||||
if (data && immediatePatch) this._patch(data);
|
||||
}
|
||||
|
||||
@@ -63,6 +64,19 @@ class Channel extends Base {
|
||||
return new Date(this.createdTimestamp);
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether or not the structure has been deleted
|
||||
* @type {boolean}
|
||||
*/
|
||||
get deleted() {
|
||||
return deletedChannels.has(this);
|
||||
}
|
||||
|
||||
set deleted(value) {
|
||||
if (value) deletedChannels.add(this);
|
||||
else deletedChannels.delete(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether this Channel is a partial
|
||||
* <info>This is always false outside of DM channels.</info>
|
||||
@@ -197,7 +211,8 @@ class Channel extends Base {
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Channel;
|
||||
exports.Channel = Channel;
|
||||
exports.deletedChannels = deletedChannels;
|
||||
|
||||
/**
|
||||
* @external APIChannel
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
const Channel = require('./Channel');
|
||||
const { Channel } = require('./Channel');
|
||||
const TextBasedChannel = require('./interfaces/TextBasedChannel');
|
||||
const MessageManager = require('../managers/MessageManager');
|
||||
|
||||
|
||||
@@ -3,6 +3,13 @@
|
||||
const Base = require('./Base');
|
||||
const SnowflakeUtil = require('../util/SnowflakeUtil');
|
||||
|
||||
/**
|
||||
* @type {WeakSet<Emoji>}
|
||||
* @private
|
||||
* @internal
|
||||
*/
|
||||
const deletedEmojis = new WeakSet();
|
||||
|
||||
/**
|
||||
* Represents raw emoji data from the API
|
||||
* @typedef {APIEmoji} RawEmoji
|
||||
@@ -35,12 +42,19 @@ class Emoji extends Base {
|
||||
* @type {?Snowflake}
|
||||
*/
|
||||
this.id = emoji.id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether this emoji has been deleted
|
||||
* @type {boolean}
|
||||
*/
|
||||
this.deleted = false;
|
||||
/**
|
||||
* Whether or not the structure has been deleted
|
||||
* @type {boolean}
|
||||
*/
|
||||
get deleted() {
|
||||
return deletedEmojis.has(this);
|
||||
}
|
||||
|
||||
set deleted(value) {
|
||||
if (value) deletedEmojis.add(this);
|
||||
else deletedEmojis.delete(this);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -106,7 +120,8 @@ class Emoji extends Base {
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Emoji;
|
||||
exports.Emoji = Emoji;
|
||||
exports.deletedEmojis = deletedEmojis;
|
||||
|
||||
/**
|
||||
* @external APIEmoji
|
||||
|
||||
@@ -37,6 +37,13 @@ const Util = require('../util/Util');
|
||||
let deprecationEmittedForSetChannelPositions = false;
|
||||
let deprecationEmittedForSetRolePositions = false;
|
||||
|
||||
/**
|
||||
* @type {WeakSet<Guild>}
|
||||
* @private
|
||||
* @internal
|
||||
*/
|
||||
const deletedGuilds = new WeakSet();
|
||||
|
||||
/**
|
||||
* Represents a guild (or a server) on Discord.
|
||||
* <info>It's recommended to see if a guild is available before performing operations or reading data from it. You can
|
||||
@@ -101,12 +108,6 @@ class Guild extends AnonymousGuild {
|
||||
*/
|
||||
this.invites = new GuildInviteManager(this);
|
||||
|
||||
/**
|
||||
* Whether the bot has been removed from the guild
|
||||
* @type {boolean}
|
||||
*/
|
||||
this.deleted = false;
|
||||
|
||||
if (!data) return;
|
||||
if (data.unavailable) {
|
||||
/**
|
||||
@@ -126,6 +127,19 @@ class Guild extends AnonymousGuild {
|
||||
this.shardId = data.shardId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether or not the structure has been deleted
|
||||
* @type {boolean}
|
||||
*/
|
||||
get deleted() {
|
||||
return deletedGuilds.has(this);
|
||||
}
|
||||
|
||||
set deleted(value) {
|
||||
if (value) deletedGuilds.add(this);
|
||||
else deletedGuilds.delete(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* The Shard this Guild belongs to.
|
||||
* @type {WebSocketShard}
|
||||
@@ -1399,7 +1413,8 @@ class Guild extends AnonymousGuild {
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Guild;
|
||||
exports.Guild = Guild;
|
||||
exports.deletedGuilds = deletedGuilds;
|
||||
|
||||
/**
|
||||
* @external APIGuild
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
const { Collection } = require('@discordjs/collection');
|
||||
const Integration = require('./Integration');
|
||||
const StageInstance = require('./StageInstance');
|
||||
const Sticker = require('./Sticker');
|
||||
const { StageInstance } = require('./StageInstance');
|
||||
const { Sticker } = require('./Sticker');
|
||||
const Webhook = require('./Webhook');
|
||||
const { OverwriteTypes, PartialTypes } = require('../util/Constants');
|
||||
const Permissions = require('../util/Permissions');
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
const Channel = require('./Channel');
|
||||
const { Channel } = require('./Channel');
|
||||
const PermissionOverwrites = require('./PermissionOverwrites');
|
||||
const { Error } = require('../errors');
|
||||
const PermissionOverwriteManager = require('../managers/PermissionOverwriteManager');
|
||||
|
||||
@@ -7,6 +7,13 @@ const { Error } = require('../errors');
|
||||
const GuildMemberRoleManager = require('../managers/GuildMemberRoleManager');
|
||||
const Permissions = require('../util/Permissions');
|
||||
|
||||
/**
|
||||
* @type {WeakSet<GuildMember>}
|
||||
* @private
|
||||
* @internal
|
||||
*/
|
||||
const deletedGuildMembers = new WeakSet();
|
||||
|
||||
/**
|
||||
* Represents a member of a guild on Discord.
|
||||
* @implements {TextBasedChannel}
|
||||
@@ -34,12 +41,6 @@ class GuildMember extends Base {
|
||||
*/
|
||||
this.premiumSinceTimestamp = null;
|
||||
|
||||
/**
|
||||
* Whether the member has been removed from the guild
|
||||
* @type {boolean}
|
||||
*/
|
||||
this.deleted = false;
|
||||
|
||||
/**
|
||||
* The nickname of this member, if they have one
|
||||
* @type {?string}
|
||||
@@ -89,6 +90,19 @@ class GuildMember extends Base {
|
||||
return clone;
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether or not the structure has been deleted
|
||||
* @type {boolean}
|
||||
*/
|
||||
get deleted() {
|
||||
return deletedGuildMembers.has(this);
|
||||
}
|
||||
|
||||
set deleted(value) {
|
||||
if (value) deletedGuildMembers.add(this);
|
||||
else deletedGuildMembers.delete(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether this GuildMember is a partial
|
||||
* @type {boolean}
|
||||
@@ -384,7 +398,8 @@ class GuildMember extends Base {
|
||||
|
||||
TextBasedChannel.applyToClass(GuildMember);
|
||||
|
||||
module.exports = GuildMember;
|
||||
exports.GuildMember = GuildMember;
|
||||
exports.deletedGuildMembers = deletedGuildMembers;
|
||||
|
||||
/**
|
||||
* @external APIGuildMember
|
||||
|
||||
@@ -10,7 +10,7 @@ const Embed = require('./MessageEmbed');
|
||||
const Mentions = require('./MessageMentions');
|
||||
const MessagePayload = require('./MessagePayload');
|
||||
const ReactionCollector = require('./ReactionCollector');
|
||||
const Sticker = require('./Sticker');
|
||||
const { Sticker } = require('./Sticker');
|
||||
const { Error } = require('../errors');
|
||||
const ReactionManager = require('../managers/ReactionManager');
|
||||
const { InteractionTypes, MessageTypes, SystemMessageTypes } = require('../util/Constants');
|
||||
@@ -19,6 +19,13 @@ const Permissions = require('../util/Permissions');
|
||||
const SnowflakeUtil = require('../util/SnowflakeUtil');
|
||||
const Util = require('../util/Util');
|
||||
|
||||
/**
|
||||
* @type {WeakSet<Message>}
|
||||
* @private
|
||||
* @internal
|
||||
*/
|
||||
const deletedMessages = new WeakSet();
|
||||
|
||||
/**
|
||||
* Represents a message on Discord.
|
||||
* @extends {Base}
|
||||
@@ -39,12 +46,6 @@ class Message extends Base {
|
||||
*/
|
||||
this.guildId = data.guild_id ?? this.channel?.guild?.id ?? null;
|
||||
|
||||
/**
|
||||
* Whether this message has been deleted
|
||||
* @type {boolean}
|
||||
*/
|
||||
this.deleted = false;
|
||||
|
||||
this._patch(data);
|
||||
}
|
||||
|
||||
@@ -348,6 +349,19 @@ class Message extends Base {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether or not the structure has been deleted
|
||||
* @type {boolean}
|
||||
*/
|
||||
get deleted() {
|
||||
return deletedMessages.has(this);
|
||||
}
|
||||
|
||||
set deleted(value) {
|
||||
if (value) deletedMessages.add(this);
|
||||
else deletedMessages.delete(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* The channel that the message was sent in
|
||||
* @type {TextChannel|DMChannel|NewsChannel|ThreadChannel}
|
||||
@@ -942,4 +956,5 @@ class Message extends Base {
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Message;
|
||||
exports.Message = Message;
|
||||
exports.deletedMessages = deletedMessages;
|
||||
|
||||
@@ -185,7 +185,7 @@ class MessageMentions {
|
||||
*/
|
||||
has(data, { ignoreDirect = false, ignoreRoles = false, ignoreEveryone = false } = {}) {
|
||||
if (!ignoreEveryone && this.everyone) return true;
|
||||
const GuildMember = require('./GuildMember');
|
||||
const { GuildMember } = require('./GuildMember');
|
||||
if (!ignoreRoles && data instanceof GuildMember) {
|
||||
for (const role of this.roles.values()) if (data.roles.cache.has(role.id)) return true;
|
||||
}
|
||||
|
||||
@@ -66,7 +66,7 @@ class MessagePayload {
|
||||
*/
|
||||
get isUser() {
|
||||
const User = require('./User');
|
||||
const GuildMember = require('./GuildMember');
|
||||
const { GuildMember } = require('./GuildMember');
|
||||
return this.target instanceof User || this.target instanceof GuildMember;
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ class MessagePayload {
|
||||
* @readonly
|
||||
*/
|
||||
get isMessage() {
|
||||
const Message = require('./Message');
|
||||
const { Message } = require('./Message');
|
||||
return this.target instanceof Message;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
const Channel = require('./Channel');
|
||||
const { Channel } = require('./Channel');
|
||||
const { Error } = require('../errors');
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
const Base = require('./Base');
|
||||
const Role = require('./Role');
|
||||
const { Role } = require('./Role');
|
||||
const { TypeError } = require('../errors');
|
||||
const { OverwriteTypes } = require('../util/Constants');
|
||||
const Permissions = require('../util/Permissions');
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
const Base = require('./Base');
|
||||
const Emoji = require('./Emoji');
|
||||
const { Emoji } = require('./Emoji');
|
||||
const ActivityFlags = require('../util/ActivityFlags');
|
||||
const { ActivityTypes } = require('../util/Constants');
|
||||
const Util = require('../util/Util');
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
const Emoji = require('./Emoji');
|
||||
const { Emoji } = require('./Emoji');
|
||||
const Util = require('../util/Util');
|
||||
|
||||
/**
|
||||
|
||||
@@ -6,6 +6,13 @@ const Permissions = require('../util/Permissions');
|
||||
const SnowflakeUtil = require('../util/SnowflakeUtil');
|
||||
const Util = require('../util/Util');
|
||||
|
||||
/**
|
||||
* @type {WeakSet<Role>}
|
||||
* @private
|
||||
* @internal
|
||||
*/
|
||||
const deletedRoles = new WeakSet();
|
||||
|
||||
/**
|
||||
* Represents a role on Discord.
|
||||
* @extends {Base}
|
||||
@@ -32,12 +39,6 @@ class Role extends Base {
|
||||
*/
|
||||
this.unicodeEmoji = null;
|
||||
|
||||
/**
|
||||
* Whether the role has been deleted
|
||||
* @type {boolean}
|
||||
*/
|
||||
this.deleted = false;
|
||||
|
||||
if (data) this._patch(data);
|
||||
}
|
||||
|
||||
@@ -146,6 +147,19 @@ class Role extends Base {
|
||||
return new Date(this.createdTimestamp);
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether or not the role has been deleted
|
||||
* @type {boolean}
|
||||
*/
|
||||
get deleted() {
|
||||
return deletedRoles.has(this);
|
||||
}
|
||||
|
||||
set deleted(value) {
|
||||
if (value) deletedRoles.add(this);
|
||||
else deletedRoles.delete(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* The hexadecimal version of the role color, with a leading hashtag
|
||||
* @type {string}
|
||||
@@ -462,7 +476,8 @@ class Role extends Base {
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Role;
|
||||
exports.Role = Role;
|
||||
exports.deletedRoles = deletedRoles;
|
||||
|
||||
/**
|
||||
* @external APIRole
|
||||
|
||||
@@ -4,6 +4,13 @@ const Base = require('./Base');
|
||||
const { PrivacyLevels } = require('../util/Constants');
|
||||
const SnowflakeUtil = require('../util/SnowflakeUtil');
|
||||
|
||||
/**
|
||||
* @type {WeakSet<StageInstance>}
|
||||
* @private
|
||||
* @internal
|
||||
*/
|
||||
const deletedStageInstances = new WeakSet();
|
||||
|
||||
/**
|
||||
* Represents a stage instance.
|
||||
* @extends {Base}
|
||||
@@ -18,12 +25,6 @@ class StageInstance extends Base {
|
||||
*/
|
||||
this.id = data.id;
|
||||
|
||||
/**
|
||||
* Whether the stage instance has been deleted
|
||||
* @type {boolean}
|
||||
*/
|
||||
this.deleted = false;
|
||||
|
||||
this._patch(data);
|
||||
}
|
||||
|
||||
@@ -80,6 +81,19 @@ class StageInstance extends Base {
|
||||
return this.client.channels.resolve(this.channelId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether or not the stage instance has been deleted
|
||||
* @type {boolean}
|
||||
*/
|
||||
get deleted() {
|
||||
return deletedStageInstances.has(this);
|
||||
}
|
||||
|
||||
set deleted(value) {
|
||||
if (value) deletedStageInstances.add(this);
|
||||
else deletedStageInstances.delete(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* The guild this stage instance belongs to
|
||||
* @type {?Guild}
|
||||
@@ -115,7 +129,7 @@ class StageInstance extends Base {
|
||||
async delete() {
|
||||
await this.guild.stageInstances.delete(this.channelId);
|
||||
const clone = this._clone();
|
||||
clone.deleted = true;
|
||||
deletedStageInstances.add(clone);
|
||||
return clone;
|
||||
}
|
||||
|
||||
@@ -152,4 +166,5 @@ class StageInstance extends Base {
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = StageInstance;
|
||||
exports.StageInstance = StageInstance;
|
||||
exports.deletedStageInstances = deletedStageInstances;
|
||||
|
||||
@@ -4,6 +4,13 @@ const Base = require('./Base');
|
||||
const { StickerFormatTypes, StickerTypes } = require('../util/Constants');
|
||||
const SnowflakeUtil = require('../util/SnowflakeUtil');
|
||||
|
||||
/**
|
||||
* @type {WeakSet<StageInstance>}
|
||||
* @private
|
||||
* @internal
|
||||
*/
|
||||
const deletedStickers = new WeakSet();
|
||||
|
||||
/**
|
||||
* Represents a Sticker.
|
||||
* @extends {Base}
|
||||
@@ -137,6 +144,19 @@ class Sticker extends Base {
|
||||
return new Date(this.createdTimestamp);
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether or not the stage instance has been deleted
|
||||
* @type {boolean}
|
||||
*/
|
||||
get deleted() {
|
||||
return deletedStickers.has(this);
|
||||
}
|
||||
|
||||
set deleted(value) {
|
||||
if (value) deletedStickers.add(this);
|
||||
else deletedStickers.delete(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether this sticker is partial
|
||||
* @type {boolean}
|
||||
@@ -264,7 +284,8 @@ class Sticker extends Base {
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Sticker;
|
||||
exports.Sticker = Sticker;
|
||||
exports.deletedStickers = deletedStickers;
|
||||
|
||||
/**
|
||||
* @external APISticker
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
const { Collection } = require('@discordjs/collection');
|
||||
const Base = require('./Base');
|
||||
const Sticker = require('./Sticker');
|
||||
const { Sticker } = require('./Sticker');
|
||||
const SnowflakeUtil = require('../util/SnowflakeUtil');
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
const Channel = require('./Channel');
|
||||
const { Channel } = require('./Channel');
|
||||
const TextBasedChannel = require('./interfaces/TextBasedChannel');
|
||||
const { RangeError } = require('../errors');
|
||||
const MessageManager = require('../managers/MessageManager');
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
const Base = require('./Base');
|
||||
const Emoji = require('./Emoji');
|
||||
const { Emoji } = require('./Emoji');
|
||||
|
||||
/**
|
||||
* Represents a channel link in a guild's welcome screen.
|
||||
|
||||
@@ -156,7 +156,7 @@ class TextBasedChannel {
|
||||
*/
|
||||
async send(options) {
|
||||
const User = require('../User');
|
||||
const GuildMember = require('../GuildMember');
|
||||
const { GuildMember } = require('../GuildMember');
|
||||
|
||||
if (this instanceof User || this instanceof GuildMember) {
|
||||
const dm = await this.createDM();
|
||||
|
||||
Reference in New Issue
Block a user