refactor: make Structure#deleted a getter to a WeakSet (#7074)

This commit is contained in:
Antonio Román
2021-12-08 10:47:54 +01:00
committed by GitHub
parent f410536c51
commit b0937502d3
51 changed files with 297 additions and 120 deletions

14
package-lock.json generated
View File

@@ -22,7 +22,7 @@
"devDependencies": { "devDependencies": {
"@commitlint/cli": "^15.0.0", "@commitlint/cli": "^15.0.0",
"@commitlint/config-angular": "^15.0.0", "@commitlint/config-angular": "^15.0.0",
"@discordjs/docgen": "^0.10.0", "@discordjs/docgen": "^0.11.0",
"@favware/npm-deprecate": "^1.0.4", "@favware/npm-deprecate": "^1.0.4",
"@types/node": "^16.11.10", "@types/node": "^16.11.10",
"conventional-changelog-cli": "^2.1.1", "conventional-changelog-cli": "^2.1.1",
@@ -1015,9 +1015,9 @@
} }
}, },
"node_modules/@discordjs/docgen": { "node_modules/@discordjs/docgen": {
"version": "0.10.0", "version": "0.11.0",
"resolved": "https://registry.npmjs.org/@discordjs/docgen/-/docgen-0.10.0.tgz", "resolved": "https://registry.npmjs.org/@discordjs/docgen/-/docgen-0.11.0.tgz",
"integrity": "sha512-dtZs7wwTCORwjPutC1WrN/i3O29lVDdfVATzD7WCgZbdB+sJ3BprSdjd4TaxLrEIHwlnS0ZVj1iUg+cL4RL+Tw==", "integrity": "sha512-0vcZmJkGUpV4HCvhz6zPECal8fvKeuD7QLal3leFilS1QGVH1hPf/cWPxCLN6T8dFugj8aLtQJF/gN5bNFLUoQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"eslint": "^6.3.0", "eslint": "^6.3.0",
@@ -13510,9 +13510,9 @@
"integrity": "sha512-dMjLl60b2DMqObbH1MQZKePgWhsNe49XkKBZ0W5Acl5uVV43SN414i2QfZwRI7dXAqIn8pEWD2+XXQFn9KWxqg==" "integrity": "sha512-dMjLl60b2DMqObbH1MQZKePgWhsNe49XkKBZ0W5Acl5uVV43SN414i2QfZwRI7dXAqIn8pEWD2+XXQFn9KWxqg=="
}, },
"@discordjs/docgen": { "@discordjs/docgen": {
"version": "0.10.0", "version": "0.11.0",
"resolved": "https://registry.npmjs.org/@discordjs/docgen/-/docgen-0.10.0.tgz", "resolved": "https://registry.npmjs.org/@discordjs/docgen/-/docgen-0.11.0.tgz",
"integrity": "sha512-dtZs7wwTCORwjPutC1WrN/i3O29lVDdfVATzD7WCgZbdB+sJ3BprSdjd4TaxLrEIHwlnS0ZVj1iUg+cL4RL+Tw==", "integrity": "sha512-0vcZmJkGUpV4HCvhz6zPECal8fvKeuD7QLal3leFilS1QGVH1hPf/cWPxCLN6T8dFugj8aLtQJF/gN5bNFLUoQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"eslint": "^6.3.0", "eslint": "^6.3.0",

View File

@@ -63,7 +63,7 @@
"devDependencies": { "devDependencies": {
"@commitlint/cli": "^15.0.0", "@commitlint/cli": "^15.0.0",
"@commitlint/config-angular": "^15.0.0", "@commitlint/config-angular": "^15.0.0",
"@discordjs/docgen": "^0.10.0", "@discordjs/docgen": "^0.11.0",
"@favware/npm-deprecate": "^1.0.4", "@favware/npm-deprecate": "^1.0.4",
"@types/node": "^16.11.10", "@types/node": "^16.11.10",
"conventional-changelog-cli": "^2.1.1", "conventional-changelog-cli": "^2.1.1",

View File

@@ -15,7 +15,7 @@ const ClientPresence = require('../structures/ClientPresence');
const GuildPreview = require('../structures/GuildPreview'); const GuildPreview = require('../structures/GuildPreview');
const GuildTemplate = require('../structures/GuildTemplate'); const GuildTemplate = require('../structures/GuildTemplate');
const Invite = require('../structures/Invite'); const Invite = require('../structures/Invite');
const Sticker = require('../structures/Sticker'); const { Sticker } = require('../structures/Sticker');
const StickerPack = require('../structures/StickerPack'); const StickerPack = require('../structures/StickerPack');
const VoiceRegion = require('../structures/VoiceRegion'); const VoiceRegion = require('../structures/VoiceRegion');
const Webhook = require('../structures/Webhook'); const Webhook = require('../structures/Webhook');

View File

@@ -1,7 +1,9 @@
'use strict'; 'use strict';
const Action = require('./Action'); const Action = require('./Action');
const { deletedChannels } = require('../../structures/Channel');
const DMChannel = require('../../structures/DMChannel'); const DMChannel = require('../../structures/DMChannel');
const { deletedMessages } = require('../../structures/Message');
const { Events } = require('../../util/Constants'); const { Events } = require('../../util/Constants');
class ChannelDeleteAction extends Action { class ChannelDeleteAction extends Action {
@@ -16,10 +18,10 @@ class ChannelDeleteAction extends Action {
if (channel) { if (channel) {
client.channels._remove(channel.id); client.channels._remove(channel.id);
channel.deleted = true; deletedChannels.add(channel);
if (channel.messages && !(channel instanceof DMChannel)) { if (channel.messages && !(channel instanceof DMChannel)) {
for (const message of channel.messages.cache.values()) { for (const message of channel.messages.cache.values()) {
message.deleted = true; deletedMessages.add(message);
} }
} }
/** /**

View File

@@ -1,7 +1,7 @@
'use strict'; 'use strict';
const Action = require('./Action'); const Action = require('./Action');
const Channel = require('../../structures/Channel'); const { Channel } = require('../../structures/Channel');
const { ChannelTypes } = require('../../util/Constants'); const { ChannelTypes } = require('../../util/Constants');
class ChannelUpdateAction extends Action { class ChannelUpdateAction extends Action {

View File

@@ -1,6 +1,7 @@
'use strict'; 'use strict';
const Action = require('./Action'); const Action = require('./Action');
const { deletedGuilds } = require('../../structures/Guild');
const { Events } = require('../../util/Constants'); const { Events } = require('../../util/Constants');
class GuildDeleteAction extends Action { class GuildDeleteAction extends Action {
@@ -37,7 +38,7 @@ class GuildDeleteAction extends Action {
// Delete guild // Delete guild
client.guilds.cache.delete(guild.id); client.guilds.cache.delete(guild.id);
guild.deleted = true; deletedGuilds.add(guild);
/** /**
* Emitted whenever a guild kicks the client or the guild is deleted/left. * Emitted whenever a guild kicks the client or the guild is deleted/left.

View File

@@ -1,12 +1,13 @@
'use strict'; 'use strict';
const Action = require('./Action'); const Action = require('./Action');
const { deletedEmojis } = require('../../structures/Emoji');
const { Events } = require('../../util/Constants'); const { Events } = require('../../util/Constants');
class GuildEmojiDeleteAction extends Action { class GuildEmojiDeleteAction extends Action {
handle(emoji) { handle(emoji) {
emoji.guild.emojis.cache.delete(emoji.id); emoji.guild.emojis.cache.delete(emoji.id);
emoji.deleted = true; deletedEmojis.add(emoji);
/** /**
* Emitted whenever a custom emoji is deleted in a guild. * Emitted whenever a custom emoji is deleted in a guild.
* @event Client#emojiDelete * @event Client#emojiDelete

View File

@@ -1,6 +1,7 @@
'use strict'; 'use strict';
const Action = require('./Action'); const Action = require('./Action');
const { deletedGuildMembers } = require('../../structures/GuildMember');
const { Events, Status } = require('../../util/Constants'); const { Events, Status } = require('../../util/Constants');
class GuildMemberRemoveAction extends Action { class GuildMemberRemoveAction extends Action {
@@ -12,7 +13,7 @@ class GuildMemberRemoveAction extends Action {
member = this.getMember({ user: data.user }, guild); member = this.getMember({ user: data.user }, guild);
guild.memberCount--; guild.memberCount--;
if (member) { if (member) {
member.deleted = true; deletedGuildMembers.add(member);
guild.members.cache.delete(member.id); guild.members.cache.delete(member.id);
/** /**
* Emitted whenever a member leaves a guild, or is kicked. * Emitted whenever a member leaves a guild, or is kicked.

View File

@@ -1,6 +1,7 @@
'use strict'; 'use strict';
const Action = require('./Action'); const Action = require('./Action');
const { deletedRoles } = require('../../structures/Role');
const { Events } = require('../../util/Constants'); const { Events } = require('../../util/Constants');
class GuildRoleDeleteAction extends Action { class GuildRoleDeleteAction extends Action {
@@ -13,7 +14,7 @@ class GuildRoleDeleteAction extends Action {
role = guild.roles.cache.get(data.role_id); role = guild.roles.cache.get(data.role_id);
if (role) { if (role) {
guild.roles.cache.delete(data.role_id); guild.roles.cache.delete(data.role_id);
role.deleted = true; deletedRoles.add(role);
/** /**
* Emitted whenever a guild role is deleted. * Emitted whenever a guild role is deleted.
* @event Client#roleDelete * @event Client#roleDelete

View File

@@ -1,12 +1,13 @@
'use strict'; 'use strict';
const Action = require('./Action'); const Action = require('./Action');
const { deletedStickers } = require('../../structures/Sticker');
const { Events } = require('../../util/Constants'); const { Events } = require('../../util/Constants');
class GuildStickerDeleteAction extends Action { class GuildStickerDeleteAction extends Action {
handle(sticker) { handle(sticker) {
sticker.guild.stickers.cache.delete(sticker.id); sticker.guild.stickers.cache.delete(sticker.id);
sticker.deleted = true; deletedStickers.add(sticker);
/** /**
* Emitted whenever a custom sticker is deleted in a guild. * Emitted whenever a custom sticker is deleted in a guild.
* @event Client#stickerDelete * @event Client#stickerDelete

View File

@@ -1,6 +1,7 @@
'use strict'; 'use strict';
const Action = require('./Action'); const Action = require('./Action');
const { deletedMessages } = require('../../structures/Message');
const { Events } = require('../../util/Constants'); const { Events } = require('../../util/Constants');
class MessageDeleteAction extends Action { class MessageDeleteAction extends Action {
@@ -14,7 +15,7 @@ class MessageDeleteAction extends Action {
message = this.getMessage(data, channel); message = this.getMessage(data, channel);
if (message) { if (message) {
channel.messages.cache.delete(message.id); channel.messages.cache.delete(message.id);
message.deleted = true; deletedMessages.add(message);
/** /**
* Emitted whenever a message is deleted. * Emitted whenever a message is deleted.
* @event Client#messageDelete * @event Client#messageDelete

View File

@@ -2,6 +2,7 @@
const { Collection } = require('@discordjs/collection'); const { Collection } = require('@discordjs/collection');
const Action = require('./Action'); const Action = require('./Action');
const { deletedMessages } = require('../../structures/Message');
const { Events } = require('../../util/Constants'); const { Events } = require('../../util/Constants');
class MessageDeleteBulkAction extends Action { class MessageDeleteBulkAction extends Action {
@@ -24,7 +25,7 @@ class MessageDeleteBulkAction extends Action {
false, false,
); );
if (message) { if (message) {
message.deleted = true; deletedMessages.add(message);
messages.set(message.id, message); messages.set(message.id, message);
channel.messages.cache.delete(id); channel.messages.cache.delete(id);
} }

View File

@@ -1,6 +1,7 @@
'use strict'; 'use strict';
const Action = require('./Action'); const Action = require('./Action');
const { deletedStageInstances } = require('../../structures/StageInstance');
const { Events } = require('../../util/Constants'); const { Events } = require('../../util/Constants');
class StageInstanceDeleteAction extends Action { class StageInstanceDeleteAction extends Action {
@@ -12,7 +13,7 @@ class StageInstanceDeleteAction extends Action {
const stageInstance = channel.guild.stageInstances._add(data); const stageInstance = channel.guild.stageInstances._add(data);
if (stageInstance) { if (stageInstance) {
channel.guild.stageInstances.cache.delete(stageInstance.id); channel.guild.stageInstances.cache.delete(stageInstance.id);
stageInstance.deleted = true; deletedStageInstances.add(stageInstance);
/** /**
* Emitted whenever a stage instance is deleted. * Emitted whenever a stage instance is deleted.

View File

@@ -1,6 +1,8 @@
'use strict'; 'use strict';
const Action = require('./Action'); const Action = require('./Action');
const { deletedChannels } = require('../../structures/Channel');
const { deletedMessages } = require('../../structures/Message');
const { Events } = require('../../util/Constants'); const { Events } = require('../../util/Constants');
class ThreadDeleteAction extends Action { class ThreadDeleteAction extends Action {
@@ -10,9 +12,9 @@ class ThreadDeleteAction extends Action {
if (thread) { if (thread) {
client.channels._remove(thread.id); client.channels._remove(thread.id);
thread.deleted = true; deletedChannels.add(thread);
for (const message of thread.messages.cache.values()) { for (const message of thread.messages.cache.values()) {
message.deleted = true; deletedMessages.add(message);
} }
/** /**

View File

@@ -79,7 +79,7 @@ exports.BaseGuildVoiceChannel = require('./structures/BaseGuildVoiceChannel');
exports.BaseMessageComponent = require('./structures/BaseMessageComponent'); exports.BaseMessageComponent = require('./structures/BaseMessageComponent');
exports.ButtonInteraction = require('./structures/ButtonInteraction'); exports.ButtonInteraction = require('./structures/ButtonInteraction');
exports.CategoryChannel = require('./structures/CategoryChannel'); exports.CategoryChannel = require('./structures/CategoryChannel');
exports.Channel = require('./structures/Channel'); exports.Channel = require('./structures/Channel').Channel;
exports.ClientApplication = require('./structures/ClientApplication'); exports.ClientApplication = require('./structures/ClientApplication');
exports.ClientPresence = require('./structures/ClientPresence'); exports.ClientPresence = require('./structures/ClientPresence');
exports.ClientUser = require('./structures/ClientUser'); exports.ClientUser = require('./structures/ClientUser');
@@ -88,14 +88,14 @@ exports.CommandInteraction = require('./structures/CommandInteraction');
exports.CommandInteractionOptionResolver = require('./structures/CommandInteractionOptionResolver'); exports.CommandInteractionOptionResolver = require('./structures/CommandInteractionOptionResolver');
exports.ContextMenuInteraction = require('./structures/ContextMenuInteraction'); exports.ContextMenuInteraction = require('./structures/ContextMenuInteraction');
exports.DMChannel = require('./structures/DMChannel'); exports.DMChannel = require('./structures/DMChannel');
exports.Emoji = require('./structures/Emoji'); exports.Emoji = require('./structures/Emoji').Emoji;
exports.Guild = require('./structures/Guild'); exports.Guild = require('./structures/Guild').Guild;
exports.GuildAuditLogs = require('./structures/GuildAuditLogs'); exports.GuildAuditLogs = require('./structures/GuildAuditLogs');
exports.GuildAuditLogsEntry = require('./structures/GuildAuditLogs').Entry; exports.GuildAuditLogsEntry = require('./structures/GuildAuditLogs').Entry;
exports.GuildBan = require('./structures/GuildBan'); exports.GuildBan = require('./structures/GuildBan');
exports.GuildChannel = require('./structures/GuildChannel'); exports.GuildChannel = require('./structures/GuildChannel');
exports.GuildEmoji = require('./structures/GuildEmoji'); exports.GuildEmoji = require('./structures/GuildEmoji');
exports.GuildMember = require('./structures/GuildMember'); exports.GuildMember = require('./structures/GuildMember').GuildMember;
exports.GuildPreview = require('./structures/GuildPreview'); exports.GuildPreview = require('./structures/GuildPreview');
exports.GuildPreviewEmoji = require('./structures/GuildPreviewEmoji'); exports.GuildPreviewEmoji = require('./structures/GuildPreviewEmoji');
exports.GuildTemplate = require('./structures/GuildTemplate'); exports.GuildTemplate = require('./structures/GuildTemplate');
@@ -107,7 +107,7 @@ exports.InteractionWebhook = require('./structures/InteractionWebhook');
exports.Invite = require('./structures/Invite'); exports.Invite = require('./structures/Invite');
exports.InviteStageInstance = require('./structures/InviteStageInstance'); exports.InviteStageInstance = require('./structures/InviteStageInstance');
exports.InviteGuild = require('./structures/InviteGuild'); exports.InviteGuild = require('./structures/InviteGuild');
exports.Message = require('./structures/Message'); exports.Message = require('./structures/Message').Message;
exports.MessageActionRow = require('./structures/MessageActionRow'); exports.MessageActionRow = require('./structures/MessageActionRow');
exports.MessageAttachment = require('./structures/MessageAttachment'); exports.MessageAttachment = require('./structures/MessageAttachment');
exports.MessageButton = require('./structures/MessageButton'); exports.MessageButton = require('./structures/MessageButton');
@@ -127,11 +127,11 @@ exports.Presence = require('./structures/Presence').Presence;
exports.ReactionCollector = require('./structures/ReactionCollector'); exports.ReactionCollector = require('./structures/ReactionCollector');
exports.ReactionEmoji = require('./structures/ReactionEmoji'); exports.ReactionEmoji = require('./structures/ReactionEmoji');
exports.RichPresenceAssets = require('./structures/Presence').RichPresenceAssets; exports.RichPresenceAssets = require('./structures/Presence').RichPresenceAssets;
exports.Role = require('./structures/Role'); exports.Role = require('./structures/Role').Role;
exports.SelectMenuInteraction = require('./structures/SelectMenuInteraction'); exports.SelectMenuInteraction = require('./structures/SelectMenuInteraction');
exports.StageChannel = require('./structures/StageChannel'); exports.StageChannel = require('./structures/StageChannel');
exports.StageInstance = require('./structures/StageInstance'); exports.StageInstance = require('./structures/StageInstance').StageInstance;
exports.Sticker = require('./structures/Sticker'); exports.Sticker = require('./structures/Sticker').Sticker;
exports.StickerPack = require('./structures/StickerPack'); exports.StickerPack = require('./structures/StickerPack');
exports.StoreChannel = require('./structures/StoreChannel'); exports.StoreChannel = require('./structures/StoreChannel');
exports.Team = require('./structures/Team'); exports.Team = require('./structures/Team');

View File

@@ -1,7 +1,7 @@
'use strict'; 'use strict';
const CachedManager = require('./CachedManager'); const CachedManager = require('./CachedManager');
const Channel = require('../structures/Channel'); const { Channel } = require('../structures/Channel');
const { Events, ThreadChannelTypes } = require('../util/Constants'); const { Events, ThreadChannelTypes } = require('../util/Constants');
let cacheWarningEmitted = false; let cacheWarningEmitted = false;

View File

@@ -4,7 +4,7 @@ const { Collection } = require('@discordjs/collection');
const CachedManager = require('./CachedManager'); const CachedManager = require('./CachedManager');
const { TypeError, Error } = require('../errors'); const { TypeError, Error } = require('../errors');
const GuildBan = require('../structures/GuildBan'); const GuildBan = require('../structures/GuildBan');
const GuildMember = require('../structures/GuildMember'); const { GuildMember } = require('../structures/GuildMember');
/** /**
* Manages API methods for GuildBans and stores their cache. * Manages API methods for GuildBans and stores their cache.

View File

@@ -3,7 +3,7 @@
const { Collection } = require('@discordjs/collection'); const { Collection } = require('@discordjs/collection');
const DataManager = require('./DataManager'); const DataManager = require('./DataManager');
const { TypeError } = require('../errors'); const { TypeError } = require('../errors');
const Role = require('../structures/Role'); const { Role } = require('../structures/Role');
/** /**
* Manages API methods for roles belonging to emojis and stores their cache. * Manages API methods for roles belonging to emojis and stores their cache.

View File

@@ -2,13 +2,13 @@
const { Collection } = require('@discordjs/collection'); const { Collection } = require('@discordjs/collection');
const CachedManager = require('./CachedManager'); const CachedManager = require('./CachedManager');
const Guild = require('../structures/Guild'); const { Guild } = require('../structures/Guild');
const GuildChannel = require('../structures/GuildChannel'); const GuildChannel = require('../structures/GuildChannel');
const GuildEmoji = require('../structures/GuildEmoji'); const GuildEmoji = require('../structures/GuildEmoji');
const GuildMember = require('../structures/GuildMember'); const { GuildMember } = require('../structures/GuildMember');
const Invite = require('../structures/Invite'); const Invite = require('../structures/Invite');
const OAuth2Guild = require('../structures/OAuth2Guild'); const OAuth2Guild = require('../structures/OAuth2Guild');
const Role = require('../structures/Role'); const { Role } = require('../structures/Role');
const { const {
ChannelTypes, ChannelTypes,
Events, Events,

View File

@@ -4,8 +4,8 @@ const { Collection } = require('@discordjs/collection');
const CachedManager = require('./CachedManager'); const CachedManager = require('./CachedManager');
const { Error, TypeError, RangeError } = require('../errors'); const { Error, TypeError, RangeError } = require('../errors');
const BaseGuildVoiceChannel = require('../structures/BaseGuildVoiceChannel'); const BaseGuildVoiceChannel = require('../structures/BaseGuildVoiceChannel');
const GuildMember = require('../structures/GuildMember'); const { GuildMember } = require('../structures/GuildMember');
const Role = require('../structures/Role'); const { Role } = require('../structures/Role');
const { Events, Opcodes } = require('../util/Constants'); const { Events, Opcodes } = require('../util/Constants');
const SnowflakeUtil = require('../util/SnowflakeUtil'); const SnowflakeUtil = require('../util/SnowflakeUtil');

View File

@@ -3,7 +3,7 @@
const { Collection } = require('@discordjs/collection'); const { Collection } = require('@discordjs/collection');
const DataManager = require('./DataManager'); const DataManager = require('./DataManager');
const { TypeError } = require('../errors'); const { TypeError } = require('../errors');
const Role = require('../structures/Role'); const { Role } = require('../structures/Role');
/** /**
* Manages API methods for roles of a GuildMember and stores their cache. * Manages API methods for roles of a GuildMember and stores their cache.

View File

@@ -4,7 +4,7 @@ const { Collection } = require('@discordjs/collection');
const CachedManager = require('./CachedManager'); const CachedManager = require('./CachedManager');
const { TypeError } = require('../errors'); const { TypeError } = require('../errors');
const MessagePayload = require('../structures/MessagePayload'); const MessagePayload = require('../structures/MessagePayload');
const Sticker = require('../structures/Sticker'); const { Sticker } = require('../structures/Sticker');
/** /**
* Manages API methods for Guild Stickers and stores their cache. * Manages API methods for Guild Stickers and stores their cache.

View File

@@ -3,7 +3,7 @@
const { Collection } = require('@discordjs/collection'); const { Collection } = require('@discordjs/collection');
const CachedManager = require('./CachedManager'); const CachedManager = require('./CachedManager');
const { TypeError } = require('../errors'); const { TypeError } = require('../errors');
const Message = require('../structures/Message'); const { Message } = require('../structures/Message');
const MessagePayload = require('../structures/MessagePayload'); const MessagePayload = require('../structures/MessagePayload');
const Util = require('../util/Util'); const Util = require('../util/Util');

View File

@@ -4,7 +4,7 @@ const { Collection } = require('@discordjs/collection');
const CachedManager = require('./CachedManager'); const CachedManager = require('./CachedManager');
const { TypeError } = require('../errors'); const { TypeError } = require('../errors');
const PermissionOverwrites = require('../structures/PermissionOverwrites'); const PermissionOverwrites = require('../structures/PermissionOverwrites');
const Role = require('../structures/Role'); const { Role } = require('../structures/Role');
const { OverwriteTypes } = require('../util/Constants'); const { OverwriteTypes } = require('../util/Constants');
let cacheWarningEmitted = false; let cacheWarningEmitted = false;

View File

@@ -3,7 +3,7 @@
const { Collection } = require('@discordjs/collection'); const { Collection } = require('@discordjs/collection');
const CachedManager = require('./CachedManager'); const CachedManager = require('./CachedManager');
const { TypeError } = require('../errors'); const { TypeError } = require('../errors');
const Role = require('../structures/Role'); const { Role } = require('../structures/Role');
const DataResolver = require('../util/DataResolver'); const DataResolver = require('../util/DataResolver');
const Permissions = require('../util/Permissions'); const Permissions = require('../util/Permissions');
const { resolveColor, setPosition } = require('../util/Util'); const { resolveColor, setPosition } = require('../util/Util');

View File

@@ -2,7 +2,7 @@
const CachedManager = require('./CachedManager'); const CachedManager = require('./CachedManager');
const { TypeError, Error } = require('../errors'); const { TypeError, Error } = require('../errors');
const StageInstance = require('../structures/StageInstance'); const { StageInstance } = require('../structures/StageInstance');
const { PrivacyLevels } = require('../util/Constants'); const { PrivacyLevels } = require('../util/Constants');
/** /**

View File

@@ -1,8 +1,8 @@
'use strict'; 'use strict';
const CachedManager = require('./CachedManager'); const CachedManager = require('./CachedManager');
const GuildMember = require('../structures/GuildMember'); const { GuildMember } = require('../structures/GuildMember');
const Message = require('../structures/Message'); const { Message } = require('../structures/Message');
const ThreadMember = require('../structures/ThreadMember'); const ThreadMember = require('../structures/ThreadMember');
const User = require('../structures/User'); const User = require('../structures/User');

View File

@@ -1,6 +1,6 @@
'use strict'; 'use strict';
const Emoji = require('./Emoji'); const { Emoji } = require('./Emoji');
/** /**
* Parent class for {@link GuildEmoji} and {@link GuildPreviewEmoji}. * Parent class for {@link GuildEmoji} and {@link GuildPreviewEmoji}.

View File

@@ -12,6 +12,13 @@ let VoiceChannel;
const { ChannelTypes, ThreadChannelTypes, VoiceBasedChannelTypes } = require('../util/Constants'); const { ChannelTypes, ThreadChannelTypes, VoiceBasedChannelTypes } = require('../util/Constants');
const SnowflakeUtil = require('../util/SnowflakeUtil'); const SnowflakeUtil = require('../util/SnowflakeUtil');
/**
* @type {WeakSet<Channel>}
* @private
* @internal
*/
const deletedChannels = new WeakSet();
/** /**
* Represents any channel on Discord. * Represents any channel on Discord.
* @extends {Base} * @extends {Base}
@@ -28,12 +35,6 @@ class Channel extends Base {
*/ */
this.type = type ?? 'UNKNOWN'; this.type = type ?? 'UNKNOWN';
/**
* Whether the channel has been deleted
* @type {boolean}
*/
this.deleted = false;
if (data && immediatePatch) this._patch(data); if (data && immediatePatch) this._patch(data);
} }
@@ -63,6 +64,19 @@ class Channel extends Base {
return new Date(this.createdTimestamp); 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 * Whether this Channel is a partial
* <info>This is always false outside of DM channels.</info> * <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 * @external APIChannel

View File

@@ -1,6 +1,6 @@
'use strict'; 'use strict';
const Channel = require('./Channel'); const { Channel } = require('./Channel');
const TextBasedChannel = require('./interfaces/TextBasedChannel'); const TextBasedChannel = require('./interfaces/TextBasedChannel');
const MessageManager = require('../managers/MessageManager'); const MessageManager = require('../managers/MessageManager');

View File

@@ -3,6 +3,13 @@
const Base = require('./Base'); const Base = require('./Base');
const SnowflakeUtil = require('../util/SnowflakeUtil'); const SnowflakeUtil = require('../util/SnowflakeUtil');
/**
* @type {WeakSet<Emoji>}
* @private
* @internal
*/
const deletedEmojis = new WeakSet();
/** /**
* Represents raw emoji data from the API * Represents raw emoji data from the API
* @typedef {APIEmoji} RawEmoji * @typedef {APIEmoji} RawEmoji
@@ -35,12 +42,19 @@ class Emoji extends Base {
* @type {?Snowflake} * @type {?Snowflake}
*/ */
this.id = emoji.id; this.id = emoji.id;
}
/** /**
* Whether this emoji has been deleted * Whether or not the structure has been deleted
* @type {boolean} * @type {boolean}
*/ */
this.deleted = false; 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 * @external APIEmoji

View File

@@ -37,6 +37,13 @@ const Util = require('../util/Util');
let deprecationEmittedForSetChannelPositions = false; let deprecationEmittedForSetChannelPositions = false;
let deprecationEmittedForSetRolePositions = false; let deprecationEmittedForSetRolePositions = false;
/**
* @type {WeakSet<Guild>}
* @private
* @internal
*/
const deletedGuilds = new WeakSet();
/** /**
* Represents a guild (or a server) on Discord. * 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 * <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); this.invites = new GuildInviteManager(this);
/**
* Whether the bot has been removed from the guild
* @type {boolean}
*/
this.deleted = false;
if (!data) return; if (!data) return;
if (data.unavailable) { if (data.unavailable) {
/** /**
@@ -126,6 +127,19 @@ class Guild extends AnonymousGuild {
this.shardId = data.shardId; 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. * The Shard this Guild belongs to.
* @type {WebSocketShard} * @type {WebSocketShard}
@@ -1399,7 +1413,8 @@ class Guild extends AnonymousGuild {
} }
} }
module.exports = Guild; exports.Guild = Guild;
exports.deletedGuilds = deletedGuilds;
/** /**
* @external APIGuild * @external APIGuild

View File

@@ -2,8 +2,8 @@
const { Collection } = require('@discordjs/collection'); const { Collection } = require('@discordjs/collection');
const Integration = require('./Integration'); const Integration = require('./Integration');
const StageInstance = require('./StageInstance'); const { StageInstance } = require('./StageInstance');
const Sticker = require('./Sticker'); const { Sticker } = require('./Sticker');
const Webhook = require('./Webhook'); const Webhook = require('./Webhook');
const { OverwriteTypes, PartialTypes } = require('../util/Constants'); const { OverwriteTypes, PartialTypes } = require('../util/Constants');
const Permissions = require('../util/Permissions'); const Permissions = require('../util/Permissions');

View File

@@ -1,6 +1,6 @@
'use strict'; 'use strict';
const Channel = require('./Channel'); const { Channel } = require('./Channel');
const PermissionOverwrites = require('./PermissionOverwrites'); const PermissionOverwrites = require('./PermissionOverwrites');
const { Error } = require('../errors'); const { Error } = require('../errors');
const PermissionOverwriteManager = require('../managers/PermissionOverwriteManager'); const PermissionOverwriteManager = require('../managers/PermissionOverwriteManager');

View File

@@ -7,6 +7,13 @@ const { Error } = require('../errors');
const GuildMemberRoleManager = require('../managers/GuildMemberRoleManager'); const GuildMemberRoleManager = require('../managers/GuildMemberRoleManager');
const Permissions = require('../util/Permissions'); const Permissions = require('../util/Permissions');
/**
* @type {WeakSet<GuildMember>}
* @private
* @internal
*/
const deletedGuildMembers = new WeakSet();
/** /**
* Represents a member of a guild on Discord. * Represents a member of a guild on Discord.
* @implements {TextBasedChannel} * @implements {TextBasedChannel}
@@ -34,12 +41,6 @@ class GuildMember extends Base {
*/ */
this.premiumSinceTimestamp = null; 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 * The nickname of this member, if they have one
* @type {?string} * @type {?string}
@@ -89,6 +90,19 @@ class GuildMember extends Base {
return clone; 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 * Whether this GuildMember is a partial
* @type {boolean} * @type {boolean}
@@ -384,7 +398,8 @@ class GuildMember extends Base {
TextBasedChannel.applyToClass(GuildMember); TextBasedChannel.applyToClass(GuildMember);
module.exports = GuildMember; exports.GuildMember = GuildMember;
exports.deletedGuildMembers = deletedGuildMembers;
/** /**
* @external APIGuildMember * @external APIGuildMember

View File

@@ -10,7 +10,7 @@ const Embed = require('./MessageEmbed');
const Mentions = require('./MessageMentions'); const Mentions = require('./MessageMentions');
const MessagePayload = require('./MessagePayload'); const MessagePayload = require('./MessagePayload');
const ReactionCollector = require('./ReactionCollector'); const ReactionCollector = require('./ReactionCollector');
const Sticker = require('./Sticker'); const { Sticker } = require('./Sticker');
const { Error } = require('../errors'); const { Error } = require('../errors');
const ReactionManager = require('../managers/ReactionManager'); const ReactionManager = require('../managers/ReactionManager');
const { InteractionTypes, MessageTypes, SystemMessageTypes } = require('../util/Constants'); const { InteractionTypes, MessageTypes, SystemMessageTypes } = require('../util/Constants');
@@ -19,6 +19,13 @@ const Permissions = require('../util/Permissions');
const SnowflakeUtil = require('../util/SnowflakeUtil'); const SnowflakeUtil = require('../util/SnowflakeUtil');
const Util = require('../util/Util'); const Util = require('../util/Util');
/**
* @type {WeakSet<Message>}
* @private
* @internal
*/
const deletedMessages = new WeakSet();
/** /**
* Represents a message on Discord. * Represents a message on Discord.
* @extends {Base} * @extends {Base}
@@ -39,12 +46,6 @@ class Message extends Base {
*/ */
this.guildId = data.guild_id ?? this.channel?.guild?.id ?? null; this.guildId = data.guild_id ?? this.channel?.guild?.id ?? null;
/**
* Whether this message has been deleted
* @type {boolean}
*/
this.deleted = false;
this._patch(data); 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 * The channel that the message was sent in
* @type {TextChannel|DMChannel|NewsChannel|ThreadChannel} * @type {TextChannel|DMChannel|NewsChannel|ThreadChannel}
@@ -942,4 +956,5 @@ class Message extends Base {
} }
} }
module.exports = Message; exports.Message = Message;
exports.deletedMessages = deletedMessages;

View File

@@ -185,7 +185,7 @@ class MessageMentions {
*/ */
has(data, { ignoreDirect = false, ignoreRoles = false, ignoreEveryone = false } = {}) { has(data, { ignoreDirect = false, ignoreRoles = false, ignoreEveryone = false } = {}) {
if (!ignoreEveryone && this.everyone) return true; if (!ignoreEveryone && this.everyone) return true;
const GuildMember = require('./GuildMember'); const { GuildMember } = require('./GuildMember');
if (!ignoreRoles && data instanceof GuildMember) { if (!ignoreRoles && data instanceof GuildMember) {
for (const role of this.roles.values()) if (data.roles.cache.has(role.id)) return true; for (const role of this.roles.values()) if (data.roles.cache.has(role.id)) return true;
} }

View File

@@ -66,7 +66,7 @@ class MessagePayload {
*/ */
get isUser() { get isUser() {
const User = require('./User'); const User = require('./User');
const GuildMember = require('./GuildMember'); const { GuildMember } = require('./GuildMember');
return this.target instanceof User || this.target instanceof GuildMember; return this.target instanceof User || this.target instanceof GuildMember;
} }
@@ -76,7 +76,7 @@ class MessagePayload {
* @readonly * @readonly
*/ */
get isMessage() { get isMessage() {
const Message = require('./Message'); const { Message } = require('./Message');
return this.target instanceof Message; return this.target instanceof Message;
} }

View File

@@ -1,6 +1,6 @@
'use strict'; 'use strict';
const Channel = require('./Channel'); const { Channel } = require('./Channel');
const { Error } = require('../errors'); const { Error } = require('../errors');
/** /**

View File

@@ -1,7 +1,7 @@
'use strict'; 'use strict';
const Base = require('./Base'); const Base = require('./Base');
const Role = require('./Role'); const { Role } = require('./Role');
const { TypeError } = require('../errors'); const { TypeError } = require('../errors');
const { OverwriteTypes } = require('../util/Constants'); const { OverwriteTypes } = require('../util/Constants');
const Permissions = require('../util/Permissions'); const Permissions = require('../util/Permissions');

View File

@@ -1,7 +1,7 @@
'use strict'; 'use strict';
const Base = require('./Base'); const Base = require('./Base');
const Emoji = require('./Emoji'); const { Emoji } = require('./Emoji');
const ActivityFlags = require('../util/ActivityFlags'); const ActivityFlags = require('../util/ActivityFlags');
const { ActivityTypes } = require('../util/Constants'); const { ActivityTypes } = require('../util/Constants');
const Util = require('../util/Util'); const Util = require('../util/Util');

View File

@@ -1,6 +1,6 @@
'use strict'; 'use strict';
const Emoji = require('./Emoji'); const { Emoji } = require('./Emoji');
const Util = require('../util/Util'); const Util = require('../util/Util');
/** /**

View File

@@ -6,6 +6,13 @@ const Permissions = require('../util/Permissions');
const SnowflakeUtil = require('../util/SnowflakeUtil'); const SnowflakeUtil = require('../util/SnowflakeUtil');
const Util = require('../util/Util'); const Util = require('../util/Util');
/**
* @type {WeakSet<Role>}
* @private
* @internal
*/
const deletedRoles = new WeakSet();
/** /**
* Represents a role on Discord. * Represents a role on Discord.
* @extends {Base} * @extends {Base}
@@ -32,12 +39,6 @@ class Role extends Base {
*/ */
this.unicodeEmoji = null; this.unicodeEmoji = null;
/**
* Whether the role has been deleted
* @type {boolean}
*/
this.deleted = false;
if (data) this._patch(data); if (data) this._patch(data);
} }
@@ -146,6 +147,19 @@ class Role extends Base {
return new Date(this.createdTimestamp); 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 * The hexadecimal version of the role color, with a leading hashtag
* @type {string} * @type {string}
@@ -462,7 +476,8 @@ class Role extends Base {
} }
} }
module.exports = Role; exports.Role = Role;
exports.deletedRoles = deletedRoles;
/** /**
* @external APIRole * @external APIRole

View File

@@ -4,6 +4,13 @@ const Base = require('./Base');
const { PrivacyLevels } = require('../util/Constants'); const { PrivacyLevels } = require('../util/Constants');
const SnowflakeUtil = require('../util/SnowflakeUtil'); const SnowflakeUtil = require('../util/SnowflakeUtil');
/**
* @type {WeakSet<StageInstance>}
* @private
* @internal
*/
const deletedStageInstances = new WeakSet();
/** /**
* Represents a stage instance. * Represents a stage instance.
* @extends {Base} * @extends {Base}
@@ -18,12 +25,6 @@ class StageInstance extends Base {
*/ */
this.id = data.id; this.id = data.id;
/**
* Whether the stage instance has been deleted
* @type {boolean}
*/
this.deleted = false;
this._patch(data); this._patch(data);
} }
@@ -80,6 +81,19 @@ class StageInstance extends Base {
return this.client.channels.resolve(this.channelId); 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 * The guild this stage instance belongs to
* @type {?Guild} * @type {?Guild}
@@ -115,7 +129,7 @@ class StageInstance extends Base {
async delete() { async delete() {
await this.guild.stageInstances.delete(this.channelId); await this.guild.stageInstances.delete(this.channelId);
const clone = this._clone(); const clone = this._clone();
clone.deleted = true; deletedStageInstances.add(clone);
return clone; return clone;
} }
@@ -152,4 +166,5 @@ class StageInstance extends Base {
} }
} }
module.exports = StageInstance; exports.StageInstance = StageInstance;
exports.deletedStageInstances = deletedStageInstances;

View File

@@ -4,6 +4,13 @@ const Base = require('./Base');
const { StickerFormatTypes, StickerTypes } = require('../util/Constants'); const { StickerFormatTypes, StickerTypes } = require('../util/Constants');
const SnowflakeUtil = require('../util/SnowflakeUtil'); const SnowflakeUtil = require('../util/SnowflakeUtil');
/**
* @type {WeakSet<StageInstance>}
* @private
* @internal
*/
const deletedStickers = new WeakSet();
/** /**
* Represents a Sticker. * Represents a Sticker.
* @extends {Base} * @extends {Base}
@@ -137,6 +144,19 @@ class Sticker extends Base {
return new Date(this.createdTimestamp); 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 * Whether this sticker is partial
* @type {boolean} * @type {boolean}
@@ -264,7 +284,8 @@ class Sticker extends Base {
} }
} }
module.exports = Sticker; exports.Sticker = Sticker;
exports.deletedStickers = deletedStickers;
/** /**
* @external APISticker * @external APISticker

View File

@@ -2,7 +2,7 @@
const { Collection } = require('@discordjs/collection'); const { Collection } = require('@discordjs/collection');
const Base = require('./Base'); const Base = require('./Base');
const Sticker = require('./Sticker'); const { Sticker } = require('./Sticker');
const SnowflakeUtil = require('../util/SnowflakeUtil'); const SnowflakeUtil = require('../util/SnowflakeUtil');
/** /**

View File

@@ -1,6 +1,6 @@
'use strict'; 'use strict';
const Channel = require('./Channel'); const { Channel } = require('./Channel');
const TextBasedChannel = require('./interfaces/TextBasedChannel'); const TextBasedChannel = require('./interfaces/TextBasedChannel');
const { RangeError } = require('../errors'); const { RangeError } = require('../errors');
const MessageManager = require('../managers/MessageManager'); const MessageManager = require('../managers/MessageManager');

View File

@@ -1,7 +1,7 @@
'use strict'; 'use strict';
const Base = require('./Base'); const Base = require('./Base');
const Emoji = require('./Emoji'); const { Emoji } = require('./Emoji');
/** /**
* Represents a channel link in a guild's welcome screen. * Represents a channel link in a guild's welcome screen.

View File

@@ -156,7 +156,7 @@ class TextBasedChannel {
*/ */
async send(options) { async send(options) {
const User = require('../User'); const User = require('../User');
const GuildMember = require('../GuildMember'); const { GuildMember } = require('../GuildMember');
if (this instanceof User || this instanceof GuildMember) { if (this instanceof User || this instanceof GuildMember) {
const dm = await this.createDM(); const dm = await this.createDM();

31
typings/index.d.ts vendored
View File

@@ -490,7 +490,9 @@ export abstract class Channel extends Base {
public constructor(client: Client, data?: RawChannelData, immediatePatch?: boolean); public constructor(client: Client, data?: RawChannelData, immediatePatch?: boolean);
public readonly createdAt: Date; public readonly createdAt: Date;
public readonly createdTimestamp: number; public readonly createdTimestamp: number;
public deleted: boolean; public get deleted(): boolean;
/** @deprecated Will be removed in v14 */
public set deleted(value: boolean);
public id: Snowflake; public id: Snowflake;
public readonly partial: false; public readonly partial: false;
public type: keyof typeof ChannelTypes; public type: keyof typeof ChannelTypes;
@@ -825,7 +827,9 @@ export class Emoji extends Base {
public animated: boolean | null; public animated: boolean | null;
public readonly createdAt: Date | null; public readonly createdAt: Date | null;
public readonly createdTimestamp: number | null; public readonly createdTimestamp: number | null;
public deleted: boolean; public get deleted(): boolean;
/** @deprecated Will be removed in v14 */
public set deleted(value: boolean);
public id: Snowflake | null; public id: Snowflake | null;
public name: string | null; public name: string | null;
public readonly identifier: string; public readonly identifier: string;
@@ -850,7 +854,9 @@ export class Guild extends AnonymousGuild {
public channels: GuildChannelManager; public channels: GuildChannelManager;
public commands: GuildApplicationCommandManager; public commands: GuildApplicationCommandManager;
public defaultMessageNotifications: DefaultMessageNotificationLevel | number; public defaultMessageNotifications: DefaultMessageNotificationLevel | number;
public deleted: boolean; public get deleted(): boolean;
/** @deprecated Will be removed in v14 */
public set deleted(value: boolean);
public discoverySplash: string | null; public discoverySplash: string | null;
public emojis: GuildEmojiManager; public emojis: GuildEmojiManager;
public explicitContentFilter: ExplicitContentFilterLevel; public explicitContentFilter: ExplicitContentFilterLevel;
@@ -1054,7 +1060,9 @@ export class GuildMember extends PartialTextBasedChannel(Base) {
private constructor(client: Client, data: RawGuildMemberData, guild: Guild); private constructor(client: Client, data: RawGuildMemberData, guild: Guild);
public avatar: string | null; public avatar: string | null;
public readonly bannable: boolean; public readonly bannable: boolean;
public deleted: boolean; public get deleted(): boolean;
/** @deprecated Will be removed in v14 */
public set deleted(value: boolean);
public readonly displayColor: number; public readonly displayColor: number;
public readonly displayHexColor: HexColorString; public readonly displayHexColor: HexColorString;
public readonly displayName: string; public readonly displayName: string;
@@ -1392,7 +1400,9 @@ export class Message<Cached extends boolean = boolean> extends Base {
public createdTimestamp: number; public createdTimestamp: number;
public readonly crosspostable: boolean; public readonly crosspostable: boolean;
public readonly deletable: boolean; public readonly deletable: boolean;
public deleted: boolean; public get deleted(): boolean;
/** @deprecated Will be removed in v14 */
public set deleted(value: boolean);
public readonly editable: boolean; public readonly editable: boolean;
public readonly editedAt: Date | null; public readonly editedAt: Date | null;
public editedTimestamp: number | null; public editedTimestamp: number | null;
@@ -1821,7 +1831,9 @@ export class Role extends Base {
public color: number; public color: number;
public readonly createdAt: Date; public readonly createdAt: Date;
public readonly createdTimestamp: number; public readonly createdTimestamp: number;
public deleted: boolean; public get deleted(): boolean;
/** @deprecated Will be removed in v14 */
public set deleted(value: boolean);
public readonly editable: boolean; public readonly editable: boolean;
public guild: Guild; public guild: Guild;
public readonly hexColor: HexColorString; public readonly hexColor: HexColorString;
@@ -1999,7 +2011,9 @@ export class StageChannel extends BaseGuildVoiceChannel {
export class StageInstance extends Base { export class StageInstance extends Base {
private constructor(client: Client, data: RawStageInstanceData, channel: StageChannel); private constructor(client: Client, data: RawStageInstanceData, channel: StageChannel);
public id: Snowflake; public id: Snowflake;
public deleted: boolean; public get deleted(): boolean;
/** @deprecated Will be removed in v14 */
public set deleted(value: boolean);
public guildId: Snowflake; public guildId: Snowflake;
public channelId: Snowflake; public channelId: Snowflake;
public topic: string; public topic: string;
@@ -2016,6 +2030,9 @@ export class StageInstance extends Base {
export class Sticker extends Base { export class Sticker extends Base {
private constructor(client: Client, data: RawStickerData); private constructor(client: Client, data: RawStickerData);
public get deleted(): boolean;
/** @deprecated Will be removed in v14 */
public set deleted(value: boolean);
public readonly createdTimestamp: number; public readonly createdTimestamp: number;
public readonly createdAt: Date; public readonly createdAt: Date;
public available: boolean | null; public available: boolean | null;

View File

@@ -83,6 +83,8 @@ import {
GuildAuditLogsEntry, GuildAuditLogsEntry,
GuildAuditLogs, GuildAuditLogs,
StageInstance, StageInstance,
Sticker,
Emoji,
} from '.'; } from '.';
import type { ApplicationCommandOptionTypes } from './enums'; import type { ApplicationCommandOptionTypes } from './enums';
import { expectAssignable, expectDeprecated, expectNotAssignable, expectNotType, expectType } from 'tsd'; import { expectAssignable, expectDeprecated, expectNotAssignable, expectNotType, expectType } from 'tsd';
@@ -749,6 +751,7 @@ declare const newsChannel: NewsChannel;
declare const textChannel: TextChannel; declare const textChannel: TextChannel;
declare const storeChannel: StoreChannel; declare const storeChannel: StoreChannel;
declare const categoryChannel: CategoryChannel; declare const categoryChannel: CategoryChannel;
declare const voiceChannel: VoiceChannel;
declare const guild: Guild; declare const guild: Guild;
declare const user: User; declare const user: User;
declare const guildMember: GuildMember; declare const guildMember: GuildMember;
@@ -896,6 +899,25 @@ client.on('messageReactionAdd', async reaction => {
expectType<string>(reaction.message.content); expectType<string>(reaction.message.content);
}); });
// Test .deleted deprecations
declare const emoji: Emoji;
declare const message: Message;
declare const role: Role;
declare const stageInstance: StageInstance;
declare const sticker: Sticker;
expectDeprecated((dmChannel.deleted = true));
expectDeprecated((textChannel.deleted = true));
expectDeprecated((voiceChannel.deleted = true));
expectDeprecated((newsChannel.deleted = true));
expectDeprecated((threadChannel.deleted = true));
expectDeprecated((emoji.deleted = true));
expectDeprecated((guildMember.deleted = true));
expectDeprecated((guild.deleted = true));
expectDeprecated((message.deleted = true));
expectDeprecated((role.deleted = true));
expectDeprecated((stageInstance.deleted = true));
expectDeprecated((sticker.deleted = true));
// Test interactions // Test interactions
declare const interaction: Interaction; declare const interaction: Interaction;
declare const booleanValue: boolean; declare const booleanValue: boolean;