@velliajs/discord 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +191 -0
- package/README.md +133 -0
- package/package.json +82 -0
- package/src/client/BaseClient.js +83 -0
- package/src/client/Client.js +591 -0
- package/src/client/WebhookClient.js +103 -0
- package/src/client/actions/Action.js +119 -0
- package/src/client/actions/ActionsManager.js +79 -0
- package/src/client/actions/ApplicationCommandPermissionsUpdate.js +34 -0
- package/src/client/actions/AutoModerationActionExecution.js +26 -0
- package/src/client/actions/AutoModerationRuleCreate.js +27 -0
- package/src/client/actions/AutoModerationRuleDelete.js +31 -0
- package/src/client/actions/AutoModerationRuleUpdate.js +29 -0
- package/src/client/actions/ChannelCreate.js +23 -0
- package/src/client/actions/ChannelDelete.js +23 -0
- package/src/client/actions/ChannelUpdate.js +33 -0
- package/src/client/actions/GuildAuditLogEntryCreate.js +29 -0
- package/src/client/actions/GuildBanAdd.js +20 -0
- package/src/client/actions/GuildBanRemove.js +25 -0
- package/src/client/actions/GuildChannelsPositionUpdate.js +21 -0
- package/src/client/actions/GuildDelete.js +44 -0
- package/src/client/actions/GuildEmojiCreate.js +20 -0
- package/src/client/actions/GuildEmojiDelete.js +19 -0
- package/src/client/actions/GuildEmojiUpdate.js +20 -0
- package/src/client/actions/GuildEmojisUpdate.js +34 -0
- package/src/client/actions/GuildIntegrationsUpdate.js +19 -0
- package/src/client/actions/GuildMemberRemove.js +31 -0
- package/src/client/actions/GuildMemberUpdate.js +44 -0
- package/src/client/actions/GuildRoleCreate.js +25 -0
- package/src/client/actions/GuildRoleDelete.js +29 -0
- package/src/client/actions/GuildRoleUpdate.js +39 -0
- package/src/client/actions/GuildRolesPositionUpdate.js +21 -0
- package/src/client/actions/GuildScheduledEventCreate.js +27 -0
- package/src/client/actions/GuildScheduledEventDelete.js +31 -0
- package/src/client/actions/GuildScheduledEventUpdate.js +30 -0
- package/src/client/actions/GuildScheduledEventUserAdd.js +32 -0
- package/src/client/actions/GuildScheduledEventUserRemove.js +32 -0
- package/src/client/actions/GuildStickerCreate.js +20 -0
- package/src/client/actions/GuildStickerDelete.js +19 -0
- package/src/client/actions/GuildStickerUpdate.js +20 -0
- package/src/client/actions/GuildStickersUpdate.js +34 -0
- package/src/client/actions/GuildUpdate.js +33 -0
- package/src/client/actions/InteractionCreate.js +101 -0
- package/src/client/actions/InviteCreate.js +28 -0
- package/src/client/actions/InviteDelete.js +30 -0
- package/src/client/actions/MessageCreate.js +37 -0
- package/src/client/actions/MessageDelete.js +32 -0
- package/src/client/actions/MessageDeleteBulk.js +47 -0
- package/src/client/actions/MessageReactionAdd.js +55 -0
- package/src/client/actions/MessageReactionRemove.js +45 -0
- package/src/client/actions/MessageReactionRemoveAll.js +33 -0
- package/src/client/actions/MessageReactionRemoveEmoji.js +28 -0
- package/src/client/actions/MessageUpdate.js +26 -0
- package/src/client/actions/PresenceUpdate.js +42 -0
- package/src/client/actions/StageInstanceCreate.js +28 -0
- package/src/client/actions/StageInstanceDelete.js +31 -0
- package/src/client/actions/StageInstanceUpdate.js +30 -0
- package/src/client/actions/ThreadCreate.js +24 -0
- package/src/client/actions/ThreadDelete.js +26 -0
- package/src/client/actions/ThreadListSync.js +60 -0
- package/src/client/actions/ThreadMemberUpdate.js +30 -0
- package/src/client/actions/ThreadMembersUpdate.js +47 -0
- package/src/client/actions/TypingStart.js +29 -0
- package/src/client/actions/UserUpdate.js +36 -0
- package/src/client/actions/VoiceStateUpdate.js +43 -0
- package/src/client/actions/WebhooksUpdate.js +20 -0
- package/src/client/voice/ClientVoiceManager.js +44 -0
- package/src/client/websocket/WebSocketManager.js +393 -0
- package/src/client/websocket/WebSocketShard.js +231 -0
- package/src/client/websocket/handlers/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js +5 -0
- package/src/client/websocket/handlers/AUTO_MODERATION_ACTION_EXECUTION.js +5 -0
- package/src/client/websocket/handlers/AUTO_MODERATION_RULE_CREATE.js +5 -0
- package/src/client/websocket/handlers/AUTO_MODERATION_RULE_DELETE.js +5 -0
- package/src/client/websocket/handlers/AUTO_MODERATION_RULE_UPDATE.js +5 -0
- package/src/client/websocket/handlers/CHANNEL_CREATE.js +5 -0
- package/src/client/websocket/handlers/CHANNEL_DELETE.js +5 -0
- package/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.js +22 -0
- package/src/client/websocket/handlers/CHANNEL_UPDATE.js +16 -0
- package/src/client/websocket/handlers/GUILD_AUDIT_LOG_ENTRY_CREATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_BAN_ADD.js +5 -0
- package/src/client/websocket/handlers/GUILD_BAN_REMOVE.js +5 -0
- package/src/client/websocket/handlers/GUILD_CREATE.js +26 -0
- package/src/client/websocket/handlers/GUILD_DELETE.js +5 -0
- package/src/client/websocket/handlers/GUILD_EMOJIS_UPDATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_INTEGRATIONS_UPDATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.js +39 -0
- package/src/client/websocket/handlers/GUILD_MEMBER_ADD.js +20 -0
- package/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.js +5 -0
- package/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_ROLE_CREATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_ROLE_DELETE.js +5 -0
- package/src/client/websocket/handlers/GUILD_ROLE_UPDATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.js +5 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.js +5 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.js +5 -0
- package/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_UPDATE.js +5 -0
- package/src/client/websocket/handlers/INTERACTION_CREATE.js +5 -0
- package/src/client/websocket/handlers/INVITE_CREATE.js +5 -0
- package/src/client/websocket/handlers/INVITE_DELETE.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_CREATE.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_DELETE.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_DELETE_BULK.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_REACTION_ADD.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_UPDATE.js +16 -0
- package/src/client/websocket/handlers/PRESENCE_UPDATE.js +5 -0
- package/src/client/websocket/handlers/READY.js +27 -0
- package/src/client/websocket/handlers/RESUMED.js +14 -0
- package/src/client/websocket/handlers/STAGE_INSTANCE_CREATE.js +5 -0
- package/src/client/websocket/handlers/STAGE_INSTANCE_DELETE.js +5 -0
- package/src/client/websocket/handlers/STAGE_INSTANCE_UPDATE.js +5 -0
- package/src/client/websocket/handlers/THREAD_CREATE.js +5 -0
- package/src/client/websocket/handlers/THREAD_DELETE.js +5 -0
- package/src/client/websocket/handlers/THREAD_LIST_SYNC.js +5 -0
- package/src/client/websocket/handlers/THREAD_MEMBERS_UPDATE.js +5 -0
- package/src/client/websocket/handlers/THREAD_MEMBER_UPDATE.js +5 -0
- package/src/client/websocket/handlers/THREAD_UPDATE.js +16 -0
- package/src/client/websocket/handlers/TYPING_START.js +5 -0
- package/src/client/websocket/handlers/USER_UPDATE.js +5 -0
- package/src/client/websocket/handlers/VOICE_SERVER_UPDATE.js +6 -0
- package/src/client/websocket/handlers/VOICE_STATE_UPDATE.js +5 -0
- package/src/client/websocket/handlers/WEBHOOKS_UPDATE.js +5 -0
- package/src/client/websocket/handlers/index.js +64 -0
- package/src/errors/DJSError.js +48 -0
- package/src/errors/ErrorCodes.js +319 -0
- package/src/errors/Messages.js +170 -0
- package/src/errors/index.js +5 -0
- package/src/index.js +213 -0
- package/src/managers/ApplicationCommandManager.js +263 -0
- package/src/managers/ApplicationCommandPermissionsManager.js +434 -0
- package/src/managers/AutoModerationRuleManager.js +288 -0
- package/src/managers/BaseGuildEmojiManager.js +80 -0
- package/src/managers/BaseManager.js +19 -0
- package/src/managers/CachedManager.js +57 -0
- package/src/managers/CategoryChannelChildManager.js +77 -0
- package/src/managers/ChannelManager.js +128 -0
- package/src/managers/DataManager.js +61 -0
- package/src/managers/GuildApplicationCommandManager.js +28 -0
- package/src/managers/GuildBanManager.js +204 -0
- package/src/managers/GuildChannelManager.js +494 -0
- package/src/managers/GuildEmojiManager.js +174 -0
- package/src/managers/GuildEmojiRoleManager.js +118 -0
- package/src/managers/GuildForumThreadManager.js +83 -0
- package/src/managers/GuildInviteManager.js +213 -0
- package/src/managers/GuildManager.js +283 -0
- package/src/managers/GuildMemberManager.js +540 -0
- package/src/managers/GuildMemberRoleManager.js +204 -0
- package/src/managers/GuildScheduledEventManager.js +297 -0
- package/src/managers/GuildStickerManager.js +182 -0
- package/src/managers/GuildTextThreadManager.js +91 -0
- package/src/managers/MessageManager.js +259 -0
- package/src/managers/PermissionOverwriteManager.js +168 -0
- package/src/managers/PresenceManager.js +58 -0
- package/src/managers/ReactionManager.js +68 -0
- package/src/managers/ReactionUserManager.js +77 -0
- package/src/managers/RoleManager.js +360 -0
- package/src/managers/StageInstanceManager.js +154 -0
- package/src/managers/ThreadManager.js +204 -0
- package/src/managers/ThreadMemberManager.js +182 -0
- package/src/managers/UserManager.js +139 -0
- package/src/managers/VoiceStateManager.js +37 -0
- package/src/sharding/Shard.js +457 -0
- package/src/sharding/ShardClientUtil.js +285 -0
- package/src/sharding/ShardingManager.js +326 -0
- package/src/structures/ActionRow.js +46 -0
- package/src/structures/ActionRowBuilder.js +35 -0
- package/src/structures/AnonymousGuild.js +97 -0
- package/src/structures/ApplicationCommand.js +606 -0
- package/src/structures/ApplicationRoleConnectionMetadata.js +46 -0
- package/src/structures/Attachment.js +140 -0
- package/src/structures/AttachmentBuilder.js +116 -0
- package/src/structures/AutoModerationActionExecution.js +116 -0
- package/src/structures/AutoModerationRule.js +284 -0
- package/src/structures/AutocompleteInteraction.js +97 -0
- package/src/structures/Base.js +43 -0
- package/src/structures/BaseChannel.js +160 -0
- package/src/structures/BaseGuild.js +119 -0
- package/src/structures/BaseGuildEmoji.js +56 -0
- package/src/structures/BaseGuildTextChannel.js +186 -0
- package/src/structures/BaseGuildVoiceChannel.js +234 -0
- package/src/structures/BaseInteraction.js +344 -0
- package/src/structures/BaseSelectMenuComponent.js +56 -0
- package/src/structures/ButtonBuilder.js +44 -0
- package/src/structures/ButtonComponent.js +65 -0
- package/src/structures/ButtonInteraction.js +11 -0
- package/src/structures/CategoryChannel.js +45 -0
- package/src/structures/ChannelSelectMenuBuilder.js +31 -0
- package/src/structures/ChannelSelectMenuComponent.js +20 -0
- package/src/structures/ChannelSelectMenuInteraction.js +33 -0
- package/src/structures/ChatInputCommandInteraction.js +41 -0
- package/src/structures/ClientApplication.js +193 -0
- package/src/structures/ClientPresence.js +82 -0
- package/src/structures/ClientUser.js +185 -0
- package/src/structures/CommandInteraction.js +224 -0
- package/src/structures/CommandInteractionOptionResolver.js +308 -0
- package/src/structures/Component.js +47 -0
- package/src/structures/ContextMenuCommandInteraction.js +64 -0
- package/src/structures/DMChannel.js +129 -0
- package/src/structures/DirectoryChannel.js +36 -0
- package/src/structures/Embed.js +220 -0
- package/src/structures/EmbedBuilder.js +41 -0
- package/src/structures/Emoji.js +108 -0
- package/src/structures/ForumChannel.js +264 -0
- package/src/structures/Guild.js +1361 -0
- package/src/structures/GuildAuditLogs.js +91 -0
- package/src/structures/GuildAuditLogsEntry.js +527 -0
- package/src/structures/GuildBan.js +59 -0
- package/src/structures/GuildChannel.js +457 -0
- package/src/structures/GuildEmoji.js +148 -0
- package/src/structures/GuildMember.js +518 -0
- package/src/structures/GuildPreview.js +193 -0
- package/src/structures/GuildPreviewEmoji.js +27 -0
- package/src/structures/GuildScheduledEvent.js +439 -0
- package/src/structures/GuildTemplate.js +241 -0
- package/src/structures/Integration.js +220 -0
- package/src/structures/IntegrationApplication.js +85 -0
- package/src/structures/InteractionCollector.js +263 -0
- package/src/structures/InteractionResponse.js +102 -0
- package/src/structures/InteractionWebhook.js +59 -0
- package/src/structures/Invite.js +322 -0
- package/src/structures/InviteGuild.js +22 -0
- package/src/structures/InviteStageInstance.js +87 -0
- package/src/structures/MentionableSelectMenuBuilder.js +32 -0
- package/src/structures/MentionableSelectMenuComponent.js +11 -0
- package/src/structures/MentionableSelectMenuInteraction.js +71 -0
- package/src/structures/Message.js +997 -0
- package/src/structures/MessageCollector.js +146 -0
- package/src/structures/MessageComponentInteraction.js +107 -0
- package/src/structures/MessageContextMenuCommandInteraction.js +20 -0
- package/src/structures/MessageMentions.js +297 -0
- package/src/structures/MessagePayload.js +299 -0
- package/src/structures/MessageReaction.js +142 -0
- package/src/structures/ModalBuilder.js +34 -0
- package/src/structures/ModalSubmitFields.js +55 -0
- package/src/structures/ModalSubmitInteraction.js +121 -0
- package/src/structures/NewsChannel.js +32 -0
- package/src/structures/OAuth2Guild.js +28 -0
- package/src/structures/PartialGroupDMChannel.js +60 -0
- package/src/structures/PermissionOverwrites.js +196 -0
- package/src/structures/Presence.js +372 -0
- package/src/structures/ReactionCollector.js +229 -0
- package/src/structures/ReactionEmoji.js +31 -0
- package/src/structures/Role.js +458 -0
- package/src/structures/RoleSelectMenuBuilder.js +31 -0
- package/src/structures/RoleSelectMenuComponent.js +11 -0
- package/src/structures/RoleSelectMenuInteraction.js +33 -0
- package/src/structures/SelectMenuBuilder.js +26 -0
- package/src/structures/SelectMenuComponent.js +26 -0
- package/src/structures/SelectMenuInteraction.js +26 -0
- package/src/structures/SelectMenuOptionBuilder.js +26 -0
- package/src/structures/StageChannel.js +112 -0
- package/src/structures/StageInstance.js +167 -0
- package/src/structures/Sticker.js +272 -0
- package/src/structures/StickerPack.js +95 -0
- package/src/structures/StringSelectMenuBuilder.js +79 -0
- package/src/structures/StringSelectMenuComponent.js +20 -0
- package/src/structures/StringSelectMenuInteraction.js +21 -0
- package/src/structures/StringSelectMenuOptionBuilder.js +49 -0
- package/src/structures/Team.js +117 -0
- package/src/structures/TeamMember.js +70 -0
- package/src/structures/TextChannel.js +33 -0
- package/src/structures/TextInputBuilder.js +31 -0
- package/src/structures/TextInputComponent.js +29 -0
- package/src/structures/ThreadChannel.js +606 -0
- package/src/structures/ThreadMember.js +113 -0
- package/src/structures/Typing.js +74 -0
- package/src/structures/User.js +331 -0
- package/src/structures/UserContextMenuCommandInteraction.js +29 -0
- package/src/structures/UserSelectMenuBuilder.js +31 -0
- package/src/structures/UserSelectMenuComponent.js +11 -0
- package/src/structures/UserSelectMenuInteraction.js +51 -0
- package/src/structures/VoiceChannel.js +96 -0
- package/src/structures/VoiceRegion.js +46 -0
- package/src/structures/VoiceState.js +303 -0
- package/src/structures/Webhook.js +481 -0
- package/src/structures/WelcomeChannel.js +60 -0
- package/src/structures/WelcomeScreen.js +49 -0
- package/src/structures/Widget.js +88 -0
- package/src/structures/WidgetMember.js +99 -0
- package/src/structures/interfaces/Application.js +108 -0
- package/src/structures/interfaces/Collector.js +335 -0
- package/src/structures/interfaces/InteractionResponses.js +320 -0
- package/src/structures/interfaces/TextBasedChannel.js +413 -0
- package/src/util/APITypes.js +456 -0
- package/src/util/ActivityFlagsBitField.js +26 -0
- package/src/util/ApplicationFlagsBitField.js +26 -0
- package/src/util/BitField.js +176 -0
- package/src/util/ChannelFlagsBitField.js +41 -0
- package/src/util/Channels.js +150 -0
- package/src/util/Colors.js +73 -0
- package/src/util/Components.js +152 -0
- package/src/util/Constants.js +230 -0
- package/src/util/DataResolver.js +140 -0
- package/src/util/Enums.js +13 -0
- package/src/util/Events.js +160 -0
- package/src/util/Formatters.js +413 -0
- package/src/util/GuildMemberFlagsBitField.js +41 -0
- package/src/util/IntentsBitField.js +34 -0
- package/src/util/LimitedCollection.js +68 -0
- package/src/util/MessageFlagsBitField.js +32 -0
- package/src/util/Options.js +216 -0
- package/src/util/Partials.js +44 -0
- package/src/util/PermissionsBitField.js +104 -0
- package/src/util/ShardEvents.js +27 -0
- package/src/util/Status.js +33 -0
- package/src/util/Sweepers.js +467 -0
- package/src/util/SystemChannelFlagsBitField.js +43 -0
- package/src/util/ThreadMemberFlagsBitField.js +31 -0
- package/src/util/Transformers.js +36 -0
- package/src/util/UserFlagsBitField.js +32 -0
- package/src/util/Util.js +394 -0
- package/src/util/WebSocketShardEvents.js +25 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const Partials = require('../../util/Partials');
|
|
4
|
+
|
|
5
|
+
/*
|
|
6
|
+
|
|
7
|
+
ABOUT ACTIONS
|
|
8
|
+
|
|
9
|
+
Actions are similar to WebSocket Packet Handlers, but since introducing
|
|
10
|
+
the REST API methods, in order to prevent rewriting code to handle data,
|
|
11
|
+
"actions" have been introduced. They're basically what Packet Handlers
|
|
12
|
+
used to be but they're strictly for manipulating data and making sure
|
|
13
|
+
that WebSocket events don't clash with REST methods.
|
|
14
|
+
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
class GenericAction {
|
|
18
|
+
constructor(client) {
|
|
19
|
+
this.client = client;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
handle(data) {
|
|
23
|
+
return data;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
getPayload(data, manager, id, partialType, cache) {
|
|
27
|
+
const existing = manager.cache.get(id);
|
|
28
|
+
if (!existing && this.client.options.partials.includes(partialType)) {
|
|
29
|
+
return manager._add(data, cache);
|
|
30
|
+
}
|
|
31
|
+
return existing;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
getChannel(data) {
|
|
35
|
+
const id = data.channel_id ?? data.id;
|
|
36
|
+
return (
|
|
37
|
+
data[this.client.actions.injectedChannel] ??
|
|
38
|
+
this.getPayload(
|
|
39
|
+
{
|
|
40
|
+
id,
|
|
41
|
+
guild_id: data.guild_id,
|
|
42
|
+
recipients: [data.author ?? data.user ?? { id: data.user_id }],
|
|
43
|
+
},
|
|
44
|
+
this.client.channels,
|
|
45
|
+
id,
|
|
46
|
+
Partials.Channel,
|
|
47
|
+
)
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
getMessage(data, channel, cache) {
|
|
52
|
+
const id = data.message_id ?? data.id;
|
|
53
|
+
return (
|
|
54
|
+
data[this.client.actions.injectedMessage] ??
|
|
55
|
+
this.getPayload(
|
|
56
|
+
{
|
|
57
|
+
id,
|
|
58
|
+
channel_id: channel.id,
|
|
59
|
+
guild_id: data.guild_id ?? channel.guild?.id,
|
|
60
|
+
},
|
|
61
|
+
channel.messages,
|
|
62
|
+
id,
|
|
63
|
+
Partials.Message,
|
|
64
|
+
cache,
|
|
65
|
+
)
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
getReaction(data, message, user) {
|
|
70
|
+
const id = data.emoji.id ?? decodeURIComponent(data.emoji.name);
|
|
71
|
+
return this.getPayload(
|
|
72
|
+
{
|
|
73
|
+
emoji: data.emoji,
|
|
74
|
+
count: message.partial ? null : 0,
|
|
75
|
+
me: user?.id === this.client.user.id,
|
|
76
|
+
},
|
|
77
|
+
message.reactions,
|
|
78
|
+
id,
|
|
79
|
+
Partials.Reaction,
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
getMember(data, guild) {
|
|
84
|
+
return this.getPayload(data, guild.members, data.user.id, Partials.GuildMember);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
getUser(data) {
|
|
88
|
+
const id = data.user_id;
|
|
89
|
+
return data[this.client.actions.injectedUser] ?? this.getPayload({ id }, this.client.users, id, Partials.User);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
getUserFromMember(data) {
|
|
93
|
+
if (data.guild_id && data.member?.user) {
|
|
94
|
+
const guild = this.client.guilds.cache.get(data.guild_id);
|
|
95
|
+
if (guild) {
|
|
96
|
+
return guild.members._add(data.member).user;
|
|
97
|
+
} else {
|
|
98
|
+
return this.client.users._add(data.member.user);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return this.getUser(data);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
getScheduledEvent(data, guild) {
|
|
105
|
+
const id = data.guild_scheduled_event_id ?? data.id;
|
|
106
|
+
return this.getPayload(
|
|
107
|
+
{ id, guild_id: data.guild_id ?? guild.id },
|
|
108
|
+
guild.scheduledEvents,
|
|
109
|
+
id,
|
|
110
|
+
Partials.GuildScheduledEvent,
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
getThreadMember(id, manager) {
|
|
115
|
+
return this.getPayload({ user_id: id }, manager, id, Partials.ThreadMember, false);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
module.exports = GenericAction;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
class ActionsManager {
|
|
4
|
+
// These symbols represent fully built data that we inject at times when calling actions manually.
|
|
5
|
+
// Action#getUser, for example, will return the injected data (which is assumed to be a built structure)
|
|
6
|
+
// instead of trying to make it from provided data
|
|
7
|
+
injectedUser = Symbol('djs.actions.injectedUser');
|
|
8
|
+
injectedChannel = Symbol('djs.actions.injectedChannel');
|
|
9
|
+
injectedMessage = Symbol('djs.actions.injectedMessage');
|
|
10
|
+
|
|
11
|
+
constructor(client) {
|
|
12
|
+
this.client = client;
|
|
13
|
+
|
|
14
|
+
this.register(require('./ApplicationCommandPermissionsUpdate'));
|
|
15
|
+
this.register(require('./AutoModerationActionExecution'));
|
|
16
|
+
this.register(require('./AutoModerationRuleCreate'));
|
|
17
|
+
this.register(require('./AutoModerationRuleDelete'));
|
|
18
|
+
this.register(require('./AutoModerationRuleUpdate'));
|
|
19
|
+
this.register(require('./ChannelCreate'));
|
|
20
|
+
this.register(require('./ChannelDelete'));
|
|
21
|
+
this.register(require('./ChannelUpdate'));
|
|
22
|
+
this.register(require('./GuildAuditLogEntryCreate'));
|
|
23
|
+
this.register(require('./GuildBanAdd'));
|
|
24
|
+
this.register(require('./GuildBanRemove'));
|
|
25
|
+
this.register(require('./GuildChannelsPositionUpdate'));
|
|
26
|
+
this.register(require('./GuildDelete'));
|
|
27
|
+
this.register(require('./GuildEmojiCreate'));
|
|
28
|
+
this.register(require('./GuildEmojiDelete'));
|
|
29
|
+
this.register(require('./GuildEmojiUpdate'));
|
|
30
|
+
this.register(require('./GuildEmojisUpdate'));
|
|
31
|
+
this.register(require('./GuildIntegrationsUpdate'));
|
|
32
|
+
this.register(require('./GuildMemberRemove'));
|
|
33
|
+
this.register(require('./GuildMemberUpdate'));
|
|
34
|
+
this.register(require('./GuildRoleCreate'));
|
|
35
|
+
this.register(require('./GuildRoleDelete'));
|
|
36
|
+
this.register(require('./GuildRoleUpdate'));
|
|
37
|
+
this.register(require('./GuildRolesPositionUpdate'));
|
|
38
|
+
this.register(require('./GuildScheduledEventCreate'));
|
|
39
|
+
this.register(require('./GuildScheduledEventDelete'));
|
|
40
|
+
this.register(require('./GuildScheduledEventUpdate'));
|
|
41
|
+
this.register(require('./GuildScheduledEventUserAdd'));
|
|
42
|
+
this.register(require('./GuildScheduledEventUserRemove'));
|
|
43
|
+
this.register(require('./GuildStickerCreate'));
|
|
44
|
+
this.register(require('./GuildStickerDelete'));
|
|
45
|
+
this.register(require('./GuildStickerUpdate'));
|
|
46
|
+
this.register(require('./GuildStickersUpdate'));
|
|
47
|
+
this.register(require('./GuildUpdate'));
|
|
48
|
+
this.register(require('./InteractionCreate'));
|
|
49
|
+
this.register(require('./InviteCreate'));
|
|
50
|
+
this.register(require('./InviteDelete'));
|
|
51
|
+
this.register(require('./MessageCreate'));
|
|
52
|
+
this.register(require('./MessageDelete'));
|
|
53
|
+
this.register(require('./MessageDeleteBulk'));
|
|
54
|
+
this.register(require('./MessageReactionAdd'));
|
|
55
|
+
this.register(require('./MessageReactionRemove'));
|
|
56
|
+
this.register(require('./MessageReactionRemoveAll'));
|
|
57
|
+
this.register(require('./MessageReactionRemoveEmoji'));
|
|
58
|
+
this.register(require('./MessageUpdate'));
|
|
59
|
+
this.register(require('./PresenceUpdate'));
|
|
60
|
+
this.register(require('./StageInstanceCreate'));
|
|
61
|
+
this.register(require('./StageInstanceDelete'));
|
|
62
|
+
this.register(require('./StageInstanceUpdate'));
|
|
63
|
+
this.register(require('./ThreadCreate'));
|
|
64
|
+
this.register(require('./ThreadDelete'));
|
|
65
|
+
this.register(require('./ThreadListSync'));
|
|
66
|
+
this.register(require('./ThreadMemberUpdate'));
|
|
67
|
+
this.register(require('./ThreadMembersUpdate'));
|
|
68
|
+
this.register(require('./TypingStart'));
|
|
69
|
+
this.register(require('./UserUpdate'));
|
|
70
|
+
this.register(require('./VoiceStateUpdate'));
|
|
71
|
+
this.register(require('./WebhooksUpdate'));
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
register(Action) {
|
|
75
|
+
this[Action.name.replace(/Action$/, '')] = new Action(this.client);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
module.exports = ActionsManager;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const Action = require('./Action');
|
|
4
|
+
const Events = require('../../util/Events');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* The data received in the {@link Client#event:applicationCommandPermissionsUpdate} event
|
|
8
|
+
* @typedef {Object} ApplicationCommandPermissionsUpdateData
|
|
9
|
+
* @property {Snowflake} id The id of the command or global entity that was updated
|
|
10
|
+
* @property {Snowflake} guildId The id of the guild in which permissions were updated
|
|
11
|
+
* @property {Snowflake} applicationId The id of the application that owns the command or entity being updated
|
|
12
|
+
* @property {ApplicationCommandPermissions[]} permissions The updated permissions
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
class ApplicationCommandPermissionsUpdateAction extends Action {
|
|
16
|
+
handle(data) {
|
|
17
|
+
const client = this.client;
|
|
18
|
+
/**
|
|
19
|
+
* Emitted whenever permissions for an application command in a guild were updated.
|
|
20
|
+
* <warn>This includes permission updates for other applications in addition to the logged in client,
|
|
21
|
+
* check `data.applicationId` to verify which application the update is for</warn>
|
|
22
|
+
* @event Client#applicationCommandPermissionsUpdate
|
|
23
|
+
* @param {ApplicationCommandPermissionsUpdateData} data The updated permissions
|
|
24
|
+
*/
|
|
25
|
+
client.emit(Events.ApplicationCommandPermissionsUpdate, {
|
|
26
|
+
permissions: data.permissions,
|
|
27
|
+
id: data.id,
|
|
28
|
+
guildId: data.guild_id,
|
|
29
|
+
applicationId: data.application_id,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
module.exports = ApplicationCommandPermissionsUpdateAction;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const Action = require('./Action');
|
|
4
|
+
const AutoModerationActionExecution = require('../../structures/AutoModerationActionExecution');
|
|
5
|
+
const Events = require('../../util/Events');
|
|
6
|
+
|
|
7
|
+
class AutoModerationActionExecutionAction extends Action {
|
|
8
|
+
handle(data) {
|
|
9
|
+
const { client } = this;
|
|
10
|
+
const guild = client.guilds.cache.get(data.guild_id);
|
|
11
|
+
|
|
12
|
+
if (guild) {
|
|
13
|
+
/**
|
|
14
|
+
* Emitted whenever an auto moderation rule is triggered.
|
|
15
|
+
* <info>This event requires the {@link PermissionFlagsBits.ManageGuild} permission.</info>
|
|
16
|
+
* @event Client#autoModerationActionExecution
|
|
17
|
+
* @param {AutoModerationActionExecution} autoModerationActionExecution The data of the execution
|
|
18
|
+
*/
|
|
19
|
+
client.emit(Events.AutoModerationActionExecution, new AutoModerationActionExecution(data, guild));
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return {};
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
module.exports = AutoModerationActionExecutionAction;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const Action = require('./Action');
|
|
4
|
+
const Events = require('../../util/Events');
|
|
5
|
+
|
|
6
|
+
class AutoModerationRuleCreateAction extends Action {
|
|
7
|
+
handle(data) {
|
|
8
|
+
const { client } = this;
|
|
9
|
+
const guild = client.guilds.cache.get(data.guild_id);
|
|
10
|
+
|
|
11
|
+
if (guild) {
|
|
12
|
+
const autoModerationRule = guild.autoModerationRules._add(data);
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Emitted whenever an auto moderation rule is created.
|
|
16
|
+
* <info>This event requires the {@link PermissionFlagsBits.ManageGuild} permission.</info>
|
|
17
|
+
* @event Client#autoModerationRuleCreate
|
|
18
|
+
* @param {AutoModerationRule} autoModerationRule The created auto moderation rule
|
|
19
|
+
*/
|
|
20
|
+
client.emit(Events.AutoModerationRuleCreate, autoModerationRule);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return {};
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
module.exports = AutoModerationRuleCreateAction;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const Action = require('./Action');
|
|
4
|
+
const Events = require('../../util/Events');
|
|
5
|
+
|
|
6
|
+
class AutoModerationRuleDeleteAction extends Action {
|
|
7
|
+
handle(data) {
|
|
8
|
+
const { client } = this;
|
|
9
|
+
const guild = client.guilds.cache.get(data.guild_id);
|
|
10
|
+
|
|
11
|
+
if (guild) {
|
|
12
|
+
const autoModerationRule = guild.autoModerationRules.cache.get(data.id);
|
|
13
|
+
|
|
14
|
+
if (autoModerationRule) {
|
|
15
|
+
guild.autoModerationRules.cache.delete(autoModerationRule.id);
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Emitted whenever an auto moderation rule is deleted.
|
|
19
|
+
* <info>This event requires the {@link PermissionFlagsBits.ManageGuild} permission.</info>
|
|
20
|
+
* @event Client#autoModerationRuleDelete
|
|
21
|
+
* @param {AutoModerationRule} autoModerationRule The deleted auto moderation rule
|
|
22
|
+
*/
|
|
23
|
+
client.emit(Events.AutoModerationRuleDelete, autoModerationRule);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return {};
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
module.exports = AutoModerationRuleDeleteAction;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const Action = require('./Action');
|
|
4
|
+
const Events = require('../../util/Events');
|
|
5
|
+
|
|
6
|
+
class AutoModerationRuleUpdateAction extends Action {
|
|
7
|
+
handle(data) {
|
|
8
|
+
const { client } = this;
|
|
9
|
+
const guild = client.guilds.cache.get(data.guild_id);
|
|
10
|
+
|
|
11
|
+
if (guild) {
|
|
12
|
+
const oldAutoModerationRule = guild.autoModerationRules.cache.get(data.id)?._clone() ?? null;
|
|
13
|
+
const newAutoModerationRule = guild.autoModerationRules._add(data);
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Emitted whenever an auto moderation rule gets updated.
|
|
17
|
+
* <info>This event requires the {@link PermissionFlagsBits.ManageGuild} permission.</info>
|
|
18
|
+
* @event Client#autoModerationRuleUpdate
|
|
19
|
+
* @param {?AutoModerationRule} oldAutoModerationRule The auto moderation rule before the update
|
|
20
|
+
* @param {AutoModerationRule} newAutoModerationRule The auto moderation rule after the update
|
|
21
|
+
*/
|
|
22
|
+
client.emit(Events.AutoModerationRuleUpdate, oldAutoModerationRule, newAutoModerationRule);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
return {};
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
module.exports = AutoModerationRuleUpdateAction;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const Action = require('./Action');
|
|
4
|
+
const Events = require('../../util/Events');
|
|
5
|
+
|
|
6
|
+
class ChannelCreateAction extends Action {
|
|
7
|
+
handle(data) {
|
|
8
|
+
const client = this.client;
|
|
9
|
+
const existing = client.channels.cache.has(data.id);
|
|
10
|
+
const channel = client.channels._add(data);
|
|
11
|
+
if (!existing && channel) {
|
|
12
|
+
/**
|
|
13
|
+
* Emitted whenever a guild channel is created.
|
|
14
|
+
* @event Client#channelCreate
|
|
15
|
+
* @param {GuildChannel} channel The channel that was created
|
|
16
|
+
*/
|
|
17
|
+
client.emit(Events.ChannelCreate, channel);
|
|
18
|
+
}
|
|
19
|
+
return { channel };
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
module.exports = ChannelCreateAction;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const Action = require('./Action');
|
|
4
|
+
const Events = require('../../util/Events');
|
|
5
|
+
|
|
6
|
+
class ChannelDeleteAction extends Action {
|
|
7
|
+
handle(data) {
|
|
8
|
+
const client = this.client;
|
|
9
|
+
const channel = client.channels.cache.get(data.id);
|
|
10
|
+
|
|
11
|
+
if (channel) {
|
|
12
|
+
client.channels._remove(channel.id);
|
|
13
|
+
/**
|
|
14
|
+
* Emitted whenever a channel is deleted.
|
|
15
|
+
* @event Client#channelDelete
|
|
16
|
+
* @param {DMChannel|GuildChannel} channel The channel that was deleted
|
|
17
|
+
*/
|
|
18
|
+
client.emit(Events.ChannelDelete, channel);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
module.exports = ChannelDeleteAction;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const Action = require('./Action');
|
|
4
|
+
const { createChannel } = require('../../util/Channels');
|
|
5
|
+
|
|
6
|
+
class ChannelUpdateAction extends Action {
|
|
7
|
+
handle(data) {
|
|
8
|
+
const client = this.client;
|
|
9
|
+
|
|
10
|
+
let channel = client.channels.cache.get(data.id);
|
|
11
|
+
if (channel) {
|
|
12
|
+
const old = channel._update(data);
|
|
13
|
+
|
|
14
|
+
if (channel.type !== data.type) {
|
|
15
|
+
const newChannel = createChannel(this.client, data, channel.guild);
|
|
16
|
+
for (const [id, message] of channel.messages.cache) newChannel.messages.cache.set(id, message);
|
|
17
|
+
channel = newChannel;
|
|
18
|
+
this.client.channels.cache.set(channel.id, channel);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return {
|
|
22
|
+
old,
|
|
23
|
+
updated: channel,
|
|
24
|
+
};
|
|
25
|
+
} else {
|
|
26
|
+
client.channels._add(data);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return {};
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
module.exports = ChannelUpdateAction;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const Action = require('./Action');
|
|
4
|
+
const GuildAuditLogsEntry = require('../../structures/GuildAuditLogsEntry');
|
|
5
|
+
const Events = require('../../util/Events');
|
|
6
|
+
|
|
7
|
+
class GuildAuditLogEntryCreateAction extends Action {
|
|
8
|
+
handle(data) {
|
|
9
|
+
const client = this.client;
|
|
10
|
+
const guild = client.guilds.cache.get(data.guild_id);
|
|
11
|
+
let auditLogEntry;
|
|
12
|
+
|
|
13
|
+
if (guild) {
|
|
14
|
+
auditLogEntry = new GuildAuditLogsEntry(guild, data);
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Emitted whenever a guild audit log entry is created.
|
|
18
|
+
* @event Client#guildAuditLogEntryCreate
|
|
19
|
+
* @param {GuildAuditLogsEntry} auditLogEntry The entry that was created
|
|
20
|
+
* @param {Guild} guild The guild where the entry was created
|
|
21
|
+
*/
|
|
22
|
+
client.emit(Events.GuildAuditLogEntryCreate, auditLogEntry, guild);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
return { auditLogEntry };
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
module.exports = GuildAuditLogEntryCreateAction;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const Action = require('./Action');
|
|
4
|
+
const Events = require('../../util/Events');
|
|
5
|
+
|
|
6
|
+
class GuildBanAdd extends Action {
|
|
7
|
+
handle(data) {
|
|
8
|
+
const client = this.client;
|
|
9
|
+
const guild = client.guilds.cache.get(data.guild_id);
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Emitted whenever a member is banned from a guild.
|
|
13
|
+
* @event Client#guildBanAdd
|
|
14
|
+
* @param {GuildBan} ban The ban that occurred
|
|
15
|
+
*/
|
|
16
|
+
if (guild) client.emit(Events.GuildBanAdd, guild.bans._add(data));
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
module.exports = GuildBanAdd;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const Action = require('./Action');
|
|
4
|
+
const GuildBan = require('../../structures/GuildBan');
|
|
5
|
+
const Events = require('../../util/Events');
|
|
6
|
+
|
|
7
|
+
class GuildBanRemove extends Action {
|
|
8
|
+
handle(data) {
|
|
9
|
+
const client = this.client;
|
|
10
|
+
const guild = client.guilds.cache.get(data.guild_id);
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Emitted whenever a member is unbanned from a guild.
|
|
14
|
+
* @event Client#guildBanRemove
|
|
15
|
+
* @param {GuildBan} ban The ban that was removed
|
|
16
|
+
*/
|
|
17
|
+
if (guild) {
|
|
18
|
+
const ban = guild.bans.cache.get(data.user.id) ?? new GuildBan(client, data, guild);
|
|
19
|
+
guild.bans.cache.delete(ban.user.id);
|
|
20
|
+
client.emit(Events.GuildBanRemove, ban);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
module.exports = GuildBanRemove;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const Action = require('./Action');
|
|
4
|
+
|
|
5
|
+
class GuildChannelsPositionUpdate extends Action {
|
|
6
|
+
handle(data) {
|
|
7
|
+
const client = this.client;
|
|
8
|
+
|
|
9
|
+
const guild = client.guilds.cache.get(data.guild_id);
|
|
10
|
+
if (guild) {
|
|
11
|
+
for (const partialChannel of data.channels) {
|
|
12
|
+
const channel = guild.channels.cache.get(partialChannel.id);
|
|
13
|
+
if (channel) channel.rawPosition = partialChannel.position;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return { guild };
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
module.exports = GuildChannelsPositionUpdate;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const Action = require('./Action');
|
|
4
|
+
const Events = require('../../util/Events');
|
|
5
|
+
|
|
6
|
+
class GuildDeleteAction extends Action {
|
|
7
|
+
handle(data) {
|
|
8
|
+
const client = this.client;
|
|
9
|
+
|
|
10
|
+
let guild = client.guilds.cache.get(data.id);
|
|
11
|
+
if (guild) {
|
|
12
|
+
if (data.unavailable) {
|
|
13
|
+
// Guild is unavailable
|
|
14
|
+
guild.available = false;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Emitted whenever a guild becomes unavailable, likely due to a server outage.
|
|
18
|
+
* @event Client#guildUnavailable
|
|
19
|
+
* @param {Guild} guild The guild that has become unavailable
|
|
20
|
+
*/
|
|
21
|
+
client.emit(Events.GuildUnavailable, guild);
|
|
22
|
+
|
|
23
|
+
// Stops the GuildDelete packet thinking a guild was actually deleted,
|
|
24
|
+
// handles emitting of event itself
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
for (const channel of guild.channels.cache.values()) this.client.channels._remove(channel.id);
|
|
29
|
+
client.voice.adapters.get(data.id)?.destroy();
|
|
30
|
+
|
|
31
|
+
// Delete guild
|
|
32
|
+
client.guilds.cache.delete(guild.id);
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Emitted whenever a guild kicks the client or the guild is deleted/left.
|
|
36
|
+
* @event Client#guildDelete
|
|
37
|
+
* @param {Guild} guild The guild that was deleted
|
|
38
|
+
*/
|
|
39
|
+
client.emit(Events.GuildDelete, guild);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
module.exports = GuildDeleteAction;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const Action = require('./Action');
|
|
4
|
+
const Events = require('../../util/Events');
|
|
5
|
+
|
|
6
|
+
class GuildEmojiCreateAction extends Action {
|
|
7
|
+
handle(guild, createdEmoji) {
|
|
8
|
+
const already = guild.emojis.cache.has(createdEmoji.id);
|
|
9
|
+
const emoji = guild.emojis._add(createdEmoji);
|
|
10
|
+
/**
|
|
11
|
+
* Emitted whenever a custom emoji is created in a guild.
|
|
12
|
+
* @event Client#emojiCreate
|
|
13
|
+
* @param {GuildEmoji} emoji The emoji that was created
|
|
14
|
+
*/
|
|
15
|
+
if (!already) this.client.emit(Events.GuildEmojiCreate, emoji);
|
|
16
|
+
return { emoji };
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
module.exports = GuildEmojiCreateAction;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const Action = require('./Action');
|
|
4
|
+
const Events = require('../../util/Events');
|
|
5
|
+
|
|
6
|
+
class GuildEmojiDeleteAction extends Action {
|
|
7
|
+
handle(emoji) {
|
|
8
|
+
emoji.guild.emojis.cache.delete(emoji.id);
|
|
9
|
+
/**
|
|
10
|
+
* Emitted whenever a custom emoji is deleted in a guild.
|
|
11
|
+
* @event Client#emojiDelete
|
|
12
|
+
* @param {GuildEmoji} emoji The emoji that was deleted
|
|
13
|
+
*/
|
|
14
|
+
this.client.emit(Events.GuildEmojiDelete, emoji);
|
|
15
|
+
return { emoji };
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
module.exports = GuildEmojiDeleteAction;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const Action = require('./Action');
|
|
4
|
+
const Events = require('../../util/Events');
|
|
5
|
+
|
|
6
|
+
class GuildEmojiUpdateAction extends Action {
|
|
7
|
+
handle(current, data) {
|
|
8
|
+
const old = current._update(data);
|
|
9
|
+
/**
|
|
10
|
+
* Emitted whenever a custom emoji is updated in a guild.
|
|
11
|
+
* @event Client#emojiUpdate
|
|
12
|
+
* @param {GuildEmoji} oldEmoji The old emoji
|
|
13
|
+
* @param {GuildEmoji} newEmoji The new emoji
|
|
14
|
+
*/
|
|
15
|
+
this.client.emit(Events.GuildEmojiUpdate, old, current);
|
|
16
|
+
return { emoji: current };
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
module.exports = GuildEmojiUpdateAction;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const Action = require('./Action');
|
|
4
|
+
|
|
5
|
+
class GuildEmojisUpdateAction extends Action {
|
|
6
|
+
handle(data) {
|
|
7
|
+
const guild = this.client.guilds.cache.get(data.guild_id);
|
|
8
|
+
if (!guild?.emojis) return;
|
|
9
|
+
|
|
10
|
+
const deletions = new Map(guild.emojis.cache);
|
|
11
|
+
|
|
12
|
+
for (const emoji of data.emojis) {
|
|
13
|
+
// Determine type of emoji event
|
|
14
|
+
const cachedEmoji = guild.emojis.cache.get(emoji.id);
|
|
15
|
+
if (cachedEmoji) {
|
|
16
|
+
deletions.delete(emoji.id);
|
|
17
|
+
if (!cachedEmoji.equals(emoji)) {
|
|
18
|
+
// Emoji updated
|
|
19
|
+
this.client.actions.GuildEmojiUpdate.handle(cachedEmoji, emoji);
|
|
20
|
+
}
|
|
21
|
+
} else {
|
|
22
|
+
// Emoji added
|
|
23
|
+
this.client.actions.GuildEmojiCreate.handle(guild, emoji);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
for (const emoji of deletions.values()) {
|
|
28
|
+
// Emoji deleted
|
|
29
|
+
this.client.actions.GuildEmojiDelete.handle(emoji);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
module.exports = GuildEmojisUpdateAction;
|