seyfert 1.5.0 → 2.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 +21 -190
- package/README.md +18 -10
- package/lib/api/Router.js +2 -2
- package/lib/api/Routes/applications.d.ts +23 -1
- package/lib/api/Routes/channels.d.ts +1 -1
- package/lib/api/Routes/gateway.d.ts +1 -1
- package/lib/api/Routes/guilds.d.ts +5 -2
- package/lib/api/Routes/interactions.d.ts +1 -1
- package/lib/api/Routes/invites.d.ts +1 -1
- package/lib/api/Routes/stage-instances.d.ts +1 -1
- package/lib/api/Routes/stickers.d.ts +2 -2
- package/lib/api/Routes/users.d.ts +1 -1
- package/lib/api/Routes/voice.d.ts +1 -1
- package/lib/api/Routes/webhooks.d.ts +2 -2
- package/lib/api/api.d.ts +2 -2
- package/lib/api/api.js +2 -14
- package/lib/api/bucket.d.ts +0 -1
- package/lib/api/shared.d.ts +0 -1
- package/lib/api/utils/constants.d.ts +2 -5
- package/lib/api/utils/constants.js +3 -7
- package/lib/api/utils/utils.d.ts +1 -2
- package/lib/api/utils/utils.js +2 -3
- package/lib/builders/ActionRow.d.ts +1 -1
- package/lib/builders/ActionRow.js +3 -3
- package/lib/builders/Attachment.d.ts +2 -3
- package/lib/builders/Attachment.js +12 -13
- package/lib/builders/Base.d.ts +2 -2
- package/lib/builders/Base.js +1 -1
- package/lib/builders/Button.d.ts +7 -7
- package/lib/builders/Button.js +11 -9
- package/lib/builders/Embed.d.ts +1 -1
- package/lib/builders/Modal.d.ts +1 -1
- package/lib/builders/Modal.js +2 -2
- package/lib/builders/Poll.d.ts +2 -2
- package/lib/builders/Poll.js +5 -6
- package/lib/builders/SelectMenu.d.ts +1 -1
- package/lib/builders/SelectMenu.js +17 -18
- package/lib/builders/index.d.ts +1 -1
- package/lib/builders/index.js +10 -11
- package/lib/cache/adapters/default.d.ts +16 -9
- package/lib/cache/adapters/default.js +42 -31
- package/lib/cache/adapters/index.d.ts +0 -1
- package/lib/cache/adapters/index.js +0 -1
- package/lib/cache/adapters/limited.d.ts +17 -12
- package/lib/cache/adapters/limited.js +80 -36
- package/lib/cache/adapters/types.d.ts +6 -7
- package/lib/cache/adapters/workeradapter.d.ts +6 -6
- package/lib/cache/adapters/workeradapter.js +13 -0
- package/lib/cache/index.d.ts +18 -9
- package/lib/cache/index.js +319 -21
- package/lib/cache/resources/bans.d.ts +9 -6
- package/lib/cache/resources/bans.js +13 -4
- package/lib/cache/resources/channels.d.ts +6 -4
- package/lib/cache/resources/channels.js +13 -7
- package/lib/cache/resources/default/base.d.ts +7 -7
- package/lib/cache/resources/default/base.js +2 -2
- package/lib/cache/resources/default/guild-based.d.ts +6 -6
- package/lib/cache/resources/default/guild-based.js +6 -6
- package/lib/cache/resources/default/guild-related.d.ts +7 -7
- package/lib/cache/resources/default/guild-related.js +10 -8
- package/lib/cache/resources/emojis.d.ts +15 -6
- package/lib/cache/resources/emojis.js +13 -4
- package/lib/cache/resources/guilds.d.ts +9 -6
- package/lib/cache/resources/guilds.js +27 -6
- package/lib/cache/resources/members.d.ts +9 -6
- package/lib/cache/resources/members.js +22 -6
- package/lib/cache/resources/messages.d.ts +11 -7
- package/lib/cache/resources/messages.js +19 -7
- package/lib/cache/resources/overwrites.d.ts +11 -2
- package/lib/cache/resources/overwrites.js +9 -0
- package/lib/cache/resources/presence.d.ts +3 -2
- package/lib/cache/resources/roles.d.ts +9 -6
- package/lib/cache/resources/roles.js +13 -4
- package/lib/cache/resources/stage-instances.d.ts +2 -2
- package/lib/cache/resources/stickers.d.ts +9 -6
- package/lib/cache/resources/stickers.js +13 -4
- package/lib/cache/resources/threads.d.ts +9 -6
- package/lib/cache/resources/threads.js +13 -4
- package/lib/cache/resources/users.d.ts +9 -6
- package/lib/cache/resources/users.js +13 -4
- package/lib/cache/resources/voice-states.d.ts +11 -8
- package/lib/cache/resources/voice-states.js +15 -4
- package/lib/client/base.d.ts +28 -20
- package/lib/client/base.js +58 -56
- package/lib/client/client.d.ts +7 -16
- package/lib/client/client.js +29 -31
- package/lib/client/collectors.d.ts +10 -10
- package/lib/client/collectors.js +26 -1
- package/lib/client/httpclient.d.ts +8 -13
- package/lib/client/httpclient.js +27 -218
- package/lib/client/index.d.ts +1 -0
- package/lib/client/index.js +1 -0
- package/lib/client/transformers.d.ts +68 -0
- package/lib/client/transformers.js +99 -0
- package/lib/client/types.d.ts +5 -0
- package/lib/client/types.js +2 -0
- package/lib/client/workerclient.d.ts +14 -14
- package/lib/client/workerclient.js +112 -66
- package/lib/commands/applications/chat.d.ts +35 -34
- package/lib/commands/applications/chat.js +5 -9
- package/lib/commands/applications/chatcontext.d.ts +17 -17
- package/lib/commands/applications/chatcontext.js +5 -5
- package/lib/commands/applications/menu.d.ts +2 -3
- package/lib/commands/applications/menu.js +2 -5
- package/lib/commands/applications/menucontext.d.ts +14 -13
- package/lib/commands/applications/menucontext.js +9 -9
- package/lib/commands/applications/options.d.ts +1 -1
- package/lib/commands/applications/options.js +20 -21
- package/lib/commands/applications/shared.d.ts +3 -1
- package/lib/commands/decorators.d.ts +38 -20
- package/lib/commands/decorators.js +17 -18
- package/lib/commands/handle.d.ts +64 -0
- package/lib/commands/handle.js +685 -0
- package/lib/commands/handler.d.ts +27 -18
- package/lib/commands/handler.js +290 -164
- package/lib/commands/optionresolver.d.ts +13 -13
- package/lib/commands/optionresolver.js +23 -28
- package/lib/common/bot/watcher.d.ts +4 -33
- package/lib/common/bot/watcher.js +0 -109
- package/lib/common/index.d.ts +1 -0
- package/lib/common/index.js +1 -0
- package/lib/common/it/colors.js +48 -49
- package/lib/common/it/formatter.d.ts +32 -0
- package/lib/common/it/formatter.js +42 -0
- package/lib/common/it/logger.d.ts +0 -1
- package/lib/common/it/logger.js +3 -3
- package/lib/common/it/utils.d.ts +15 -2
- package/lib/common/it/utils.js +78 -17
- package/lib/common/shorters/application.d.ts +56 -0
- package/lib/common/shorters/application.js +81 -0
- package/lib/common/shorters/bans.d.ts +4 -5
- package/lib/common/shorters/bans.js +3 -3
- package/lib/common/shorters/channels.d.ts +7 -6
- package/lib/common/shorters/channels.js +19 -15
- package/lib/common/shorters/emojis.d.ts +5 -6
- package/lib/common/shorters/emojis.js +5 -5
- package/lib/common/shorters/guilds.d.ts +18 -16
- package/lib/common/shorters/guilds.js +31 -26
- package/lib/common/shorters/interaction.d.ts +6 -6
- package/lib/common/shorters/interaction.js +3 -2
- package/lib/common/shorters/members.d.ts +29 -12
- package/lib/common/shorters/members.js +55 -16
- package/lib/common/shorters/messages.d.ts +7 -8
- package/lib/common/shorters/messages.js +8 -7
- package/lib/common/shorters/reactions.d.ts +3 -3
- package/lib/common/shorters/reactions.js +11 -11
- package/lib/common/shorters/roles.d.ts +9 -7
- package/lib/common/shorters/roles.js +26 -7
- package/lib/common/shorters/templates.d.ts +7 -8
- package/lib/common/shorters/templates.js +7 -7
- package/lib/common/shorters/threads.d.ts +6 -7
- package/lib/common/shorters/threads.js +6 -9
- package/lib/common/shorters/users.d.ts +4 -4
- package/lib/common/shorters/users.js +8 -4
- package/lib/common/shorters/webhook.d.ts +10 -10
- package/lib/common/shorters/webhook.js +10 -9
- package/lib/common/types/resolvables.d.ts +2 -2
- package/lib/common/types/util.d.ts +3 -1
- package/lib/common/types/write.d.ts +1 -1
- package/lib/components/ActionRow.d.ts +1 -1
- package/lib/components/BaseComponent.d.ts +1 -1
- package/lib/components/BaseComponent.js +1 -1
- package/lib/components/BaseSelectMenuComponent.d.ts +1 -1
- package/lib/components/ButtonComponent.d.ts +17 -7
- package/lib/components/ButtonComponent.js +19 -2
- package/lib/components/ChannelSelectMenuComponent.d.ts +3 -3
- package/lib/components/MentionableSelectMenuComponent.d.ts +2 -2
- package/lib/components/RoleSelectMenuComponent.d.ts +2 -2
- package/lib/components/StringSelectMenuComponent.d.ts +2 -2
- package/lib/components/TextInputComponent.d.ts +2 -2
- package/lib/components/UserSelectMenuComponent.d.ts +2 -2
- package/lib/components/componentcommand.js +2 -2
- package/lib/components/componentcontext.d.ts +10 -9
- package/lib/components/componentcontext.js +8 -8
- package/lib/components/handler.d.ts +15 -14
- package/lib/components/handler.js +89 -93
- package/lib/components/index.d.ts +3 -3
- package/lib/components/index.js +12 -10
- package/lib/components/modalcontext.d.ts +12 -11
- package/lib/components/modalcontext.js +2 -2
- package/lib/deps/mixer.d.ts +8 -0
- package/lib/deps/mixer.js +66 -0
- package/lib/events/handler.d.ts +35 -13
- package/lib/events/handler.js +58 -25
- package/lib/events/hooks/application_command.d.ts +2 -2
- package/lib/events/hooks/auto_moderation.d.ts +6 -7
- package/lib/events/hooks/auto_moderation.js +4 -4
- package/lib/events/hooks/channel.d.ts +2 -2
- package/lib/events/hooks/channel.js +4 -7
- package/lib/events/hooks/custom.d.ts +3 -3
- package/lib/events/hooks/dispatch.d.ts +3 -4
- package/lib/events/hooks/dispatch.js +2 -2
- package/lib/events/hooks/entitlement.d.ts +5 -37
- package/lib/events/hooks/entitlement.js +7 -7
- package/lib/events/hooks/guild.d.ts +125 -125
- package/lib/events/hooks/guild.js +13 -15
- package/lib/events/hooks/integration.d.ts +27 -28
- package/lib/events/hooks/integration.js +3 -3
- package/lib/events/hooks/interactions.d.ts +2 -2
- package/lib/events/hooks/invite.d.ts +18 -17
- package/lib/events/hooks/message.d.ts +69 -54
- package/lib/events/hooks/message.js +4 -8
- package/lib/events/hooks/presence.d.ts +17 -16
- package/lib/events/hooks/stage.d.ts +4 -4
- package/lib/events/hooks/thread.d.ts +132 -63
- package/lib/events/hooks/thread.js +4 -4
- package/lib/events/hooks/typing.d.ts +28 -6
- package/lib/events/hooks/typing.js +2 -2
- package/lib/events/hooks/user.d.ts +3 -3
- package/lib/events/hooks/user.js +2 -2
- package/lib/events/hooks/voice.d.ts +28 -3
- package/lib/events/hooks/voice.js +8 -4
- package/lib/events/hooks/webhook.d.ts +1 -1
- package/lib/index.d.ts +5 -14
- package/lib/index.js +7 -12
- package/lib/langs/handler.d.ts +14 -10
- package/lib/langs/handler.js +40 -9
- package/lib/structures/AutoModerationRule.d.ts +4 -4
- package/lib/structures/AutoModerationRule.js +1 -2
- package/lib/structures/ClientUser.d.ts +1 -1
- package/lib/structures/Entitlement.d.ts +10 -0
- package/lib/structures/Entitlement.js +16 -0
- package/lib/structures/Guild.d.ts +33 -34
- package/lib/structures/Guild.js +5 -2
- package/lib/structures/GuildBan.d.ts +6 -6
- package/lib/structures/GuildBan.js +2 -1
- package/lib/structures/GuildEmoji.d.ts +4 -4
- package/lib/structures/GuildEmoji.js +3 -2
- package/lib/structures/GuildMember.d.ts +20 -17
- package/lib/structures/GuildMember.js +18 -8
- package/lib/structures/GuildPreview.d.ts +1 -1
- package/lib/structures/GuildRole.d.ts +5 -3
- package/lib/structures/GuildRole.js +8 -1
- package/lib/structures/GuildTemplate.d.ts +2 -2
- package/lib/structures/GuildTemplate.js +1 -1
- package/lib/structures/Interaction.d.ts +53 -36
- package/lib/structures/Interaction.js +127 -91
- package/lib/structures/Message.d.ts +29 -30
- package/lib/structures/Message.js +8 -9
- package/lib/structures/Poll.d.ts +4 -3
- package/lib/structures/Poll.js +6 -2
- package/lib/structures/Sticker.d.ts +7 -7
- package/lib/structures/Sticker.js +7 -7
- package/lib/structures/User.d.ts +5 -4
- package/lib/structures/User.js +2 -1
- package/lib/structures/VoiceState.d.ts +15 -11
- package/lib/structures/VoiceState.js +35 -17
- package/lib/structures/Webhook.d.ts +6 -7
- package/lib/structures/Webhook.js +6 -7
- package/lib/structures/channels.d.ts +11 -10
- package/lib/structures/channels.js +70 -65
- package/lib/structures/extra/BaseGuild.d.ts +1 -1
- package/lib/structures/extra/BaseGuild.js +3 -3
- package/lib/structures/extra/BitField.d.ts +1 -1
- package/lib/structures/extra/BitField.js +3 -2
- package/lib/structures/extra/DiscordBase.js +2 -2
- package/lib/structures/extra/Permissions.d.ts +3 -1
- package/lib/structures/extra/Permissions.js +8 -3
- package/lib/types/gateway.d.ts +1537 -0
- package/lib/types/gateway.js +4 -0
- package/lib/types/index.d.ts +9 -1
- package/lib/types/index.js +28 -1
- package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/attachment.d.ts +5 -0
- package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/attachment.js +2 -0
- package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/base.d.ts +22 -0
- package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/base.js +2 -0
- package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/boolean.d.ts +4 -0
- package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/boolean.js +2 -0
- package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/channel.d.ts +7 -0
- package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/channel.js +2 -0
- package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/integer.d.ts +17 -0
- package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/integer.js +2 -0
- package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/mentionable.d.ts +5 -0
- package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/mentionable.js +2 -0
- package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/number.d.ts +17 -0
- package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/number.js +2 -0
- package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/role.d.ts +5 -0
- package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/role.js +2 -0
- package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/shared.d.ts +25 -0
- package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/shared.js +20 -0
- package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/string.d.ts +17 -0
- package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/string.js +2 -0
- package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/subcommand.d.ts +11 -0
- package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/subcommand.js +2 -0
- package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/subcommandGroup.d.ts +11 -0
- package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/subcommandGroup.js +2 -0
- package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/user.d.ts +5 -0
- package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/user.js +2 -0
- package/lib/types/payloads/_interactions/_applicationCommands/chatInput.d.ts +60 -0
- package/lib/types/payloads/_interactions/_applicationCommands/chatInput.js +29 -0
- package/lib/types/payloads/_interactions/_applicationCommands/contextMenu.d.ts +65 -0
- package/lib/types/payloads/_interactions/_applicationCommands/contextMenu.js +2 -0
- package/lib/types/payloads/_interactions/_applicationCommands/internals.d.ts +8 -0
- package/lib/types/payloads/_interactions/_applicationCommands/internals.js +2 -0
- package/lib/types/payloads/_interactions/_applicationCommands/permissions.d.ts +54 -0
- package/lib/types/payloads/_interactions/_applicationCommands/permissions.js +20 -0
- package/lib/types/payloads/_interactions/applicationCommands.d.ts +153 -0
- package/lib/types/payloads/_interactions/applicationCommands.js +61 -0
- package/lib/types/payloads/_interactions/autocomplete.d.ts +10 -0
- package/lib/types/payloads/_interactions/autocomplete.js +2 -0
- package/lib/types/payloads/_interactions/base.d.ts +197 -0
- package/lib/types/payloads/_interactions/base.js +2 -0
- package/lib/types/payloads/_interactions/messageComponents.d.ts +41 -0
- package/lib/types/payloads/_interactions/messageComponents.js +2 -0
- package/lib/types/payloads/_interactions/modalSubmit.d.ts +35 -0
- package/lib/types/payloads/_interactions/modalSubmit.js +2 -0
- package/lib/types/payloads/_interactions/ping.d.ts +3 -0
- package/lib/types/payloads/_interactions/ping.js +2 -0
- package/lib/types/payloads/_interactions/responses.d.ts +112 -0
- package/lib/types/payloads/_interactions/responses.js +54 -0
- package/lib/types/payloads/application.d.ts +292 -0
- package/lib/types/payloads/application.js +117 -0
- package/lib/types/payloads/auditLog.d.ts +644 -0
- package/lib/types/payloads/auditLog.js +80 -0
- package/lib/types/payloads/autoModeration.d.ts +219 -0
- package/lib/types/payloads/autoModeration.js +87 -0
- package/lib/types/payloads/channel.d.ts +1708 -0
- package/lib/types/payloads/channel.js +372 -0
- package/lib/types/payloads/emoji.d.ts +48 -0
- package/lib/types/payloads/emoji.js +5 -0
- package/lib/types/payloads/gateway.d.ts +373 -0
- package/lib/types/payloads/gateway.js +82 -0
- package/lib/types/payloads/guild.d.ts +1060 -0
- package/lib/types/payloads/guild.js +324 -0
- package/lib/types/payloads/guildScheduledEvent.d.ts +138 -0
- package/lib/types/payloads/guildScheduledEvent.js +32 -0
- package/lib/types/payloads/index.d.ts +64 -0
- package/lib/types/payloads/index.js +37 -0
- package/lib/types/payloads/interactions.d.ts +24 -0
- package/lib/types/payloads/interactions.js +23 -0
- package/lib/types/payloads/invite.d.ts +121 -0
- package/lib/types/payloads/invite.js +23 -0
- package/lib/types/payloads/monetization.d.ts +150 -0
- package/lib/types/payloads/monetization.js +79 -0
- package/lib/types/payloads/oauth2.d.ts +131 -0
- package/lib/types/payloads/oauth2.js +135 -0
- package/lib/types/payloads/permissions.d.ts +97 -0
- package/lib/types/payloads/permissions.js +16 -0
- package/lib/types/payloads/poll.d.ts +104 -0
- package/lib/types/payloads/poll.js +16 -0
- package/lib/types/payloads/stageInstance.d.ts +77 -0
- package/lib/types/payloads/stageInstance.js +19 -0
- package/lib/types/payloads/sticker.d.ts +123 -0
- package/lib/types/payloads/sticker.js +30 -0
- package/lib/types/payloads/teams.d.ts +78 -0
- package/lib/types/payloads/teams.js +23 -0
- package/lib/types/payloads/template.d.ts +62 -0
- package/lib/types/payloads/template.js +5 -0
- package/lib/types/payloads/user.d.ts +337 -0
- package/lib/types/payloads/user.js +167 -0
- package/lib/types/payloads/voice.d.ts +89 -0
- package/lib/types/payloads/voice.js +5 -0
- package/lib/types/payloads/webhook.d.ts +76 -0
- package/lib/types/payloads/webhook.js +21 -0
- package/lib/types/rest/application.d.ts +57 -0
- package/lib/types/rest/application.js +2 -0
- package/lib/types/rest/auditLog.d.ts +30 -0
- package/lib/types/rest/auditLog.js +2 -0
- package/lib/types/rest/autoModeration.d.ts +66 -0
- package/lib/types/rest/autoModeration.js +2 -0
- package/lib/types/rest/channel.d.ts +712 -0
- package/lib/types/rest/channel.js +11 -0
- package/lib/types/rest/emoji.d.ts +54 -0
- package/lib/types/rest/emoji.js +2 -0
- package/lib/types/rest/gateway.d.ts +9 -0
- package/lib/types/rest/gateway.js +2 -0
- package/lib/types/rest/guild.d.ts +865 -0
- package/lib/types/rest/guild.js +2 -0
- package/lib/types/rest/guildScheduledEvent.d.ts +126 -0
- package/lib/types/rest/guildScheduledEvent.js +2 -0
- package/lib/types/rest/index.d.ts +296 -0
- package/lib/types/rest/index.js +292 -0
- package/lib/types/rest/interactions.d.ts +194 -0
- package/lib/types/rest/interactions.js +2 -0
- package/lib/types/rest/invite.d.ts +24 -0
- package/lib/types/rest/invite.js +2 -0
- package/lib/types/rest/monetization.d.ts +82 -0
- package/lib/types/rest/monetization.js +11 -0
- package/lib/types/rest/oauth2.d.ts +172 -0
- package/lib/types/rest/oauth2.js +2 -0
- package/lib/types/rest/poll.d.ts +44 -0
- package/lib/types/rest/poll.js +2 -0
- package/lib/types/rest/stageInstance.d.ts +58 -0
- package/lib/types/rest/stageInstance.js +2 -0
- package/lib/types/rest/sticker.d.ts +77 -0
- package/lib/types/rest/sticker.js +2 -0
- package/lib/types/rest/template.d.ts +62 -0
- package/lib/types/rest/template.js +2 -0
- package/lib/types/rest/user.d.ts +120 -0
- package/lib/types/rest/user.js +2 -0
- package/lib/types/rest/voice.d.ts +17 -0
- package/lib/types/rest/voice.js +2 -0
- package/lib/types/rest/webhook.d.ts +250 -0
- package/lib/types/rest/webhook.js +2 -0
- package/lib/types/utils/index.d.ts +797 -0
- package/lib/types/utils/index.js +799 -0
- package/lib/websocket/SharedTypes.d.ts +4 -3
- package/lib/websocket/SharedTypes.js +1 -1
- package/lib/websocket/constants/index.d.ts +0 -1
- package/lib/websocket/discord/basesocket.d.ts +7 -7
- package/lib/websocket/discord/basesocket.js +34 -22
- package/lib/websocket/discord/events/memberUpdate.d.ts +1 -6
- package/lib/websocket/discord/events/memberUpdate.js +2 -1
- package/lib/websocket/discord/events/presenceUpdate.d.ts +5 -18
- package/lib/websocket/discord/events/presenceUpdate.js +5 -6
- package/lib/websocket/discord/shard.d.ts +8 -8
- package/lib/websocket/discord/shard.js +59 -47
- package/lib/websocket/discord/sharder.d.ts +6 -5
- package/lib/websocket/discord/sharder.js +11 -10
- package/lib/websocket/discord/shared.d.ts +13 -5
- package/lib/websocket/discord/socket/custom.d.ts +52 -0
- package/lib/websocket/discord/socket/custom.js +283 -0
- package/lib/websocket/discord/worker.d.ts +5 -10
- package/lib/websocket/discord/workermanager.d.ts +8 -15
- package/lib/websocket/discord/workermanager.js +35 -39
- package/lib/websocket/structures/index.d.ts +0 -1
- package/lib/websocket/structures/index.js +1 -1
- package/lib/websocket/structures/timeout.d.ts +0 -1
- package/package.json +65 -74
- package/lib/cache/adapters/redis.d.ts +0 -37
- package/lib/cache/adapters/redis.js +0 -218
- package/lib/client/oninteractioncreate.d.ts +0 -4
- package/lib/client/oninteractioncreate.js +0 -198
- package/lib/client/onmessagecreate.d.ts +0 -13
- package/lib/client/onmessagecreate.js +0 -410
- package/lib/structures/extra/functions.d.ts +0 -12
- package/lib/structures/extra/functions.js +0 -70
package/lib/client/client.js
CHANGED
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Client = void 0;
|
|
4
|
-
const
|
|
4
|
+
const types_1 = require("../types");
|
|
5
5
|
const common_1 = require("../common");
|
|
6
6
|
const events_1 = require("../events");
|
|
7
|
-
const structures_1 = require("../structures");
|
|
8
7
|
const websocket_1 = require("../websocket");
|
|
9
8
|
const memberUpdate_1 = require("../websocket/discord/events/memberUpdate");
|
|
10
9
|
const presenceUpdate_1 = require("../websocket/discord/events/presenceUpdate");
|
|
11
10
|
const base_1 = require("./base");
|
|
12
|
-
const oninteractioncreate_1 = require("./oninteractioncreate");
|
|
13
|
-
const onmessagecreate_1 = require("./onmessagecreate");
|
|
14
11
|
const collectors_1 = require("./collectors");
|
|
12
|
+
const transformers_1 = require("./transformers");
|
|
15
13
|
let parentPort;
|
|
16
14
|
class Client extends base_1.BaseClient {
|
|
17
15
|
__handleGuilds = new Set();
|
|
@@ -23,13 +21,6 @@ class Client extends base_1.BaseClient {
|
|
|
23
21
|
events = new events_1.EventHandler(this);
|
|
24
22
|
constructor(options) {
|
|
25
23
|
super(options);
|
|
26
|
-
this.options = (0, common_1.MergeOptions)({
|
|
27
|
-
commands: {
|
|
28
|
-
argsParser: options?.commands?.argsParser ?? onmessagecreate_1.defaultArgsParser,
|
|
29
|
-
optionsParser: options?.commands?.optionsParser ??
|
|
30
|
-
onmessagecreate_1.defaultOptionsParser,
|
|
31
|
-
},
|
|
32
|
-
}, this.options);
|
|
33
24
|
}
|
|
34
25
|
setServices({ gateway, ...rest }) {
|
|
35
26
|
super.setServices(rest);
|
|
@@ -48,9 +39,6 @@ class Client extends base_1.BaseClient {
|
|
|
48
39
|
}
|
|
49
40
|
else if (typeof rest.handlers.events === 'function') {
|
|
50
41
|
this.events = new events_1.EventHandler(this);
|
|
51
|
-
this.events.setHandlers({
|
|
52
|
-
callback: rest.handlers.events,
|
|
53
|
-
});
|
|
54
42
|
}
|
|
55
43
|
else {
|
|
56
44
|
this.events = rest.handlers.events;
|
|
@@ -58,7 +46,7 @@ class Client extends base_1.BaseClient {
|
|
|
58
46
|
}
|
|
59
47
|
}
|
|
60
48
|
async loadEvents(dir) {
|
|
61
|
-
dir ??= await this.getRC().then(
|
|
49
|
+
dir ??= await this.getRC().then(x => x.events);
|
|
62
50
|
if (dir && this.events) {
|
|
63
51
|
await this.events.load(dir);
|
|
64
52
|
this.logger.info('EventHandler loaded');
|
|
@@ -89,7 +77,7 @@ class Client extends base_1.BaseClient {
|
|
|
89
77
|
async start(options = {}, execute = true) {
|
|
90
78
|
await super.start(options);
|
|
91
79
|
await this.loadEvents(options.eventsDir);
|
|
92
|
-
const { token: tokenRC, intents: intentsRC, debug: debugRC
|
|
80
|
+
const { token: tokenRC, intents: intentsRC, debug: debugRC } = await this.getRC();
|
|
93
81
|
const token = options?.token ?? tokenRC;
|
|
94
82
|
const intents = options?.connection?.intents ?? intentsRC;
|
|
95
83
|
if (!this.gateway) {
|
|
@@ -123,7 +111,10 @@ class Client extends base_1.BaseClient {
|
|
|
123
111
|
}
|
|
124
112
|
}
|
|
125
113
|
async onPacket(shardId, packet) {
|
|
126
|
-
|
|
114
|
+
Promise.allSettled([
|
|
115
|
+
this.events?.runEvent('RAW', this, packet, shardId, false),
|
|
116
|
+
this.collectors.run('RAW', packet, this),
|
|
117
|
+
]); //ignore promise
|
|
127
118
|
switch (packet.t) {
|
|
128
119
|
//// Cases where we must obtain the old data before updating
|
|
129
120
|
case 'GUILD_MEMBER_UPDATE':
|
|
@@ -138,47 +129,54 @@ class Client extends base_1.BaseClient {
|
|
|
138
129
|
}
|
|
139
130
|
await this.events?.execute(packet.t, packet, this, shardId);
|
|
140
131
|
break;
|
|
132
|
+
case 'GUILD_DELETE':
|
|
141
133
|
case 'GUILD_CREATE': {
|
|
142
134
|
if (this.__handleGuilds?.has(packet.d.id)) {
|
|
143
|
-
this.__handleGuilds
|
|
144
|
-
if (!this.__handleGuilds
|
|
145
|
-
|
|
146
|
-
await this.
|
|
135
|
+
this.__handleGuilds?.delete(packet.d.id);
|
|
136
|
+
if (!this.__handleGuilds?.size && [...this.gateway.values()].every(shard => shard.data.session_id)) {
|
|
137
|
+
delete this.__handleGuilds;
|
|
138
|
+
await this.cache.onPacket?.(packet);
|
|
139
|
+
return this.events?.runEvent('BOT_READY', this, this.me, -1);
|
|
147
140
|
}
|
|
148
|
-
if (!this.__handleGuilds
|
|
141
|
+
if (!this.__handleGuilds?.size)
|
|
149
142
|
delete this.__handleGuilds;
|
|
150
|
-
return this.cache.onPacket(packet);
|
|
143
|
+
return this.cache.onPacket?.(packet);
|
|
151
144
|
}
|
|
152
145
|
await this.events?.execute(packet.t, packet, this, shardId);
|
|
153
146
|
break;
|
|
154
147
|
}
|
|
155
148
|
//rest of the events
|
|
156
149
|
default: {
|
|
157
|
-
await this.events?.execute(packet.t, packet, this, shardId);
|
|
158
150
|
switch (packet.t) {
|
|
159
151
|
case 'INTERACTION_CREATE':
|
|
160
|
-
await (
|
|
152
|
+
await this.events?.execute(packet.t, packet, this, shardId);
|
|
153
|
+
await this.handleCommand.interaction(packet.d, shardId);
|
|
161
154
|
break;
|
|
162
155
|
case 'MESSAGE_CREATE':
|
|
163
|
-
await (
|
|
156
|
+
await this.events?.execute(packet.t, packet, this, shardId);
|
|
157
|
+
await this.handleCommand.message(packet.d, shardId);
|
|
164
158
|
break;
|
|
165
159
|
case 'READY':
|
|
160
|
+
if (!this.__handleGuilds)
|
|
161
|
+
this.__handleGuilds = new Set();
|
|
166
162
|
for (const g of packet.d.guilds) {
|
|
167
163
|
this.__handleGuilds?.add(g.id);
|
|
168
164
|
}
|
|
169
165
|
this.botId = packet.d.user.id;
|
|
170
166
|
this.applicationId = packet.d.application.id;
|
|
171
|
-
this.me =
|
|
167
|
+
this.me = transformers_1.Transformers.ClientUser(this, packet.d.user, packet.d.application);
|
|
172
168
|
if (!(this.__handleGuilds?.size &&
|
|
173
|
-
(this.gateway.options.intents &
|
|
174
|
-
|
|
175
|
-
v10_1.GatewayIntentBits.Guilds)) {
|
|
176
|
-
if ([...this.gateway.values()].every((shard) => shard.data.session_id)) {
|
|
169
|
+
(this.gateway.options.intents & types_1.GatewayIntentBits.Guilds) === types_1.GatewayIntentBits.Guilds)) {
|
|
170
|
+
if ([...this.gateway.values()].every(shard => shard.data.session_id)) {
|
|
177
171
|
await this.events?.runEvent('BOT_READY', this, this.me, -1);
|
|
178
172
|
}
|
|
179
173
|
delete this.__handleGuilds;
|
|
180
174
|
}
|
|
181
175
|
this.debugger?.debug(`#${shardId}[${packet.d.user.username}](${this.botId}) is online...`);
|
|
176
|
+
await this.events?.execute(packet.t, packet, this, shardId);
|
|
177
|
+
break;
|
|
178
|
+
default:
|
|
179
|
+
await this.events?.execute(packet.t, packet, this, shardId);
|
|
182
180
|
break;
|
|
183
181
|
}
|
|
184
182
|
break;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import type { Awaitable, CamelCase } from '../common';
|
|
3
2
|
import type { CallbackEventHandler, CustomEventsKeys, GatewayEvents } from '../events';
|
|
4
3
|
export type AllClientEvents = CustomEventsKeys | GatewayEvents;
|
|
5
4
|
export type ParseClientEventName<T extends AllClientEvents> = T extends CustomEventsKeys ? T : CamelCase<T>;
|
|
5
|
+
export type CollectorRunPameters<T extends AllClientEvents> = Awaited<Parameters<CallbackEventHandler[ParseClientEventName<T>]>[0]>;
|
|
6
6
|
type RunData<T extends AllClientEvents> = {
|
|
7
7
|
options: {
|
|
8
8
|
event: T;
|
|
@@ -10,9 +10,9 @@ type RunData<T extends AllClientEvents> = {
|
|
|
10
10
|
timeout?: number;
|
|
11
11
|
onStop?: (reason: string) => unknown;
|
|
12
12
|
onStopError?: (reason: string, error: unknown) => unknown;
|
|
13
|
-
filter: (arg:
|
|
14
|
-
run: (arg:
|
|
15
|
-
onRunError?: (arg:
|
|
13
|
+
filter: (arg: CollectorRunPameters<T>) => Awaitable<boolean>;
|
|
14
|
+
run: (arg: CollectorRunPameters<T>, stop: (reason?: string) => void) => unknown;
|
|
15
|
+
onRunError?: (arg: CollectorRunPameters<T>, error: unknown, stop: (reason?: string) => void) => unknown;
|
|
16
16
|
};
|
|
17
17
|
idle?: NodeJS.Timeout;
|
|
18
18
|
timeout?: NodeJS.Timeout;
|
|
@@ -23,13 +23,13 @@ export declare class Collectors {
|
|
|
23
23
|
private generateRandomUUID;
|
|
24
24
|
create<T extends AllClientEvents>(options: RunData<T>['options']): {
|
|
25
25
|
event: T;
|
|
26
|
-
idle?: number
|
|
27
|
-
timeout?: number
|
|
28
|
-
onStop?: (
|
|
29
|
-
onStopError?: (
|
|
26
|
+
idle?: number;
|
|
27
|
+
timeout?: number;
|
|
28
|
+
onStop?: (reason: string) => unknown;
|
|
29
|
+
onStopError?: (reason: string, error: unknown) => unknown;
|
|
30
30
|
filter: (arg: Awaited<Parameters<CallbackEventHandler[ParseClientEventName<T>]>[0]>) => Awaitable<boolean>;
|
|
31
|
-
run: (arg: Awaited<Parameters<CallbackEventHandler[ParseClientEventName<T>]>[0]>, stop: (reason?: string
|
|
32
|
-
onRunError?: ((arg: Awaited<Parameters<CallbackEventHandler[ParseClientEventName<T>]>[0]>, error: unknown, stop: (reason?: string
|
|
31
|
+
run: (arg: Awaited<Parameters<CallbackEventHandler[ParseClientEventName<T>]>[0]>, stop: (reason?: string) => void) => unknown;
|
|
32
|
+
onRunError?: ((arg: Awaited<Parameters<CallbackEventHandler[ParseClientEventName<T>]>[0]>, error: unknown, stop: (reason?: string) => void) => unknown) | undefined;
|
|
33
33
|
};
|
|
34
34
|
private delete;
|
|
35
35
|
}
|
package/lib/client/collectors.js
CHANGED
|
@@ -1,8 +1,32 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
26
|
exports.Collectors = void 0;
|
|
4
27
|
const node_crypto_1 = require("node:crypto");
|
|
5
28
|
const node_console_1 = require("node:console");
|
|
29
|
+
const RawEvents = __importStar(require("../events/hooks"));
|
|
6
30
|
class Collectors {
|
|
7
31
|
values = new Map();
|
|
8
32
|
generateRandomUUID(name) {
|
|
@@ -61,10 +85,11 @@ class Collectors {
|
|
|
61
85
|
}
|
|
62
86
|
}
|
|
63
87
|
/**@internal */
|
|
64
|
-
async run(name,
|
|
88
|
+
async run(name, raw, client) {
|
|
65
89
|
const collectors = this.values.get(name);
|
|
66
90
|
if (!collectors)
|
|
67
91
|
return;
|
|
92
|
+
const data = (await RawEvents[name]?.(client, raw)) ?? raw;
|
|
68
93
|
for (const i of collectors) {
|
|
69
94
|
if (await i.options.filter(data)) {
|
|
70
95
|
i.idle?.refresh();
|
|
@@ -1,19 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import type { HttpRequest, HttpResponse } from 'uWebSockets.js';
|
|
4
|
-
import { type DeepPartial } from '../common';
|
|
1
|
+
import type { APIInteractionResponse, APIInteraction } from '../types';
|
|
2
|
+
import type { DeepPartial } from '../common';
|
|
5
3
|
import type { BaseClientOptions, StartOptions } from './base';
|
|
6
4
|
import { BaseClient } from './base';
|
|
7
5
|
export declare class HttpClient extends BaseClient {
|
|
8
|
-
app?: ReturnType<typeof import('uWebSockets.js').App>;
|
|
9
|
-
publicKey: string;
|
|
10
|
-
publicKeyHex: Buffer;
|
|
11
6
|
constructor(options?: BaseClientOptions);
|
|
12
|
-
protected static readJson<T extends Record<string, any>>(res: HttpResponse): Promise<T>;
|
|
13
|
-
protected execute(options: DeepPartial<StartOptions['httpConnection']>): Promise<void>;
|
|
14
7
|
start(options?: DeepPartial<Omit<StartOptions, 'connection' | 'eventsDir'>>): Promise<void>;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
8
|
+
onPacket(rawBody: APIInteraction): Promise<{
|
|
9
|
+
headers: {
|
|
10
|
+
'Content-Type'?: string;
|
|
11
|
+
};
|
|
12
|
+
response: APIInteractionResponse | FormData;
|
|
13
|
+
}>;
|
|
19
14
|
}
|
package/lib/client/httpclient.js
CHANGED
|
@@ -1,237 +1,46 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.HttpClient = void 0;
|
|
4
|
-
const v10_1 = require("discord-api-types/v10");
|
|
5
|
-
const magic_bytes_js_1 = require("magic-bytes.js");
|
|
6
|
-
const api_1 = require("../api");
|
|
7
4
|
const utils_1 = require("../api/utils/utils");
|
|
8
|
-
const common_1 = require("../common");
|
|
9
5
|
const base_1 = require("./base");
|
|
10
|
-
const oninteractioncreate_1 = require("./oninteractioncreate");
|
|
11
|
-
let UWS;
|
|
12
|
-
let nacl;
|
|
13
|
-
try {
|
|
14
|
-
UWS = require('uWebSockets.js');
|
|
15
|
-
}
|
|
16
|
-
catch {
|
|
17
|
-
// easter egg #1
|
|
18
|
-
}
|
|
19
|
-
try {
|
|
20
|
-
nacl = require('tweetnacl');
|
|
21
|
-
}
|
|
22
|
-
catch {
|
|
23
|
-
// I always cum
|
|
24
|
-
}
|
|
25
6
|
class HttpClient extends base_1.BaseClient {
|
|
26
|
-
app;
|
|
27
|
-
publicKey;
|
|
28
|
-
publicKeyHex;
|
|
29
7
|
constructor(options) {
|
|
30
8
|
super(options);
|
|
31
|
-
// if (!UWS) {
|
|
32
|
-
// throw new Error('No uws installed.');
|
|
33
|
-
// }
|
|
34
|
-
if (!nacl) {
|
|
35
|
-
throw new Error('No tweetnacl installed.');
|
|
36
|
-
}
|
|
37
9
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
10
|
+
async start(options = {}) {
|
|
11
|
+
await super.start(options);
|
|
12
|
+
return this.execute(options.httpConnection ?? {});
|
|
13
|
+
}
|
|
14
|
+
async onPacket(rawBody) {
|
|
15
|
+
return new Promise(async (r) => {
|
|
16
|
+
await this.handleCommand.interaction(rawBody, -1, async ({ body, files }) => {
|
|
17
|
+
let response;
|
|
18
|
+
const headers = {};
|
|
19
|
+
if (files) {
|
|
20
|
+
response = new FormData();
|
|
21
|
+
for (const [index, file] of files.entries()) {
|
|
22
|
+
const fileKey = file.key ?? `files[${index}]`;
|
|
23
|
+
if ((0, utils_1.isBufferLike)(file.data)) {
|
|
24
|
+
response.append(fileKey, new Blob([file.data], { type: file.contentType }), file.name);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
response.append(fileKey, new Blob([`${file.data}`], { type: file.contentType }), file.name);
|
|
28
|
+
}
|
|
47
29
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
return;
|
|
30
|
+
if (body) {
|
|
31
|
+
response.append('payload_json', JSON.stringify(body));
|
|
51
32
|
}
|
|
52
|
-
cb(json);
|
|
53
33
|
}
|
|
54
34
|
else {
|
|
55
|
-
|
|
35
|
+
response = body ?? {};
|
|
36
|
+
headers['Content-Type'] = 'application/json';
|
|
56
37
|
}
|
|
38
|
+
return r({
|
|
39
|
+
headers,
|
|
40
|
+
response,
|
|
41
|
+
});
|
|
57
42
|
});
|
|
58
|
-
res.onAborted(err);
|
|
59
43
|
});
|
|
60
44
|
}
|
|
61
|
-
async execute(options) {
|
|
62
|
-
await super.execute();
|
|
63
|
-
const { publicKey: publicKeyRC, port: portRC, applicationId: applicationIdRC, } = await this.getRC();
|
|
64
|
-
const publicKey = options.publicKey ?? publicKeyRC;
|
|
65
|
-
const port = options.port ?? portRC;
|
|
66
|
-
if (!publicKey) {
|
|
67
|
-
throw new Error('Expected a publicKey, check your config file');
|
|
68
|
-
}
|
|
69
|
-
if (!port) {
|
|
70
|
-
throw new Error('Expected a port, check your config file');
|
|
71
|
-
}
|
|
72
|
-
if (applicationIdRC) {
|
|
73
|
-
this.applicationId = applicationIdRC;
|
|
74
|
-
}
|
|
75
|
-
this.publicKey = publicKey;
|
|
76
|
-
this.publicKeyHex = Buffer.from(this.publicKey, 'hex');
|
|
77
|
-
if (UWS && options.useUWS) {
|
|
78
|
-
this.app = UWS.App();
|
|
79
|
-
this.app.post('/interactions', (res, req) => {
|
|
80
|
-
return this.onPacket(res, req);
|
|
81
|
-
});
|
|
82
|
-
this.app.listen(port, () => {
|
|
83
|
-
this.logger.info(`Listening to <url>:${port}/interactions`);
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
if (options.useUWS)
|
|
88
|
-
return this.logger.warn('No uWebSockets installed.');
|
|
89
|
-
this.logger.info('Use your preferred http server and invoke <HttpClient>.fetch(<Request>) to get started');
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
async start(options = {}) {
|
|
93
|
-
await super.start(options);
|
|
94
|
-
return this.execute((0, common_1.MergeOptions)({ useUWS: true }, options.httpConnection));
|
|
95
|
-
}
|
|
96
|
-
async verifySignatureGenericRequest(req) {
|
|
97
|
-
const timestamp = req.headers.get('x-signature-timestamp');
|
|
98
|
-
const ed25519 = req.headers.get('x-signature-ed25519') ?? '';
|
|
99
|
-
const body = (await req.json());
|
|
100
|
-
if (nacl.sign.detached.verify(Buffer.from(timestamp + JSON.stringify(body)), Buffer.from(ed25519, 'hex'), this.publicKeyHex)) {
|
|
101
|
-
return body;
|
|
102
|
-
}
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
// https://discord.com/developers/docs/interactions/receiving-and-responding#security-and-authorization
|
|
106
|
-
async verifySignature(res, req) {
|
|
107
|
-
const timestamp = req.getHeader('x-signature-timestamp');
|
|
108
|
-
const ed25519 = req.getHeader('x-signature-ed25519');
|
|
109
|
-
const body = await HttpClient.readJson(res);
|
|
110
|
-
if (nacl.sign.detached.verify(Buffer.from(timestamp + JSON.stringify(body)), Buffer.from(ed25519, 'hex'), this.publicKeyHex)) {
|
|
111
|
-
return body;
|
|
112
|
-
}
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
|
-
async fetch(req) {
|
|
116
|
-
const rawBody = await this.verifySignatureGenericRequest(req);
|
|
117
|
-
if (!rawBody) {
|
|
118
|
-
this.debugger?.debug('Invalid request/No info, returning 418 status.');
|
|
119
|
-
// I'm a teapot
|
|
120
|
-
return new Response('', { status: 418 });
|
|
121
|
-
}
|
|
122
|
-
switch (rawBody.type) {
|
|
123
|
-
case v10_1.InteractionType.Ping:
|
|
124
|
-
this.debugger?.debug('Ping interaction received, responding.');
|
|
125
|
-
return Response.json({ type: v10_1.InteractionResponseType.Pong }, {
|
|
126
|
-
headers: {
|
|
127
|
-
'Content-Type': 'application/json',
|
|
128
|
-
},
|
|
129
|
-
});
|
|
130
|
-
default:
|
|
131
|
-
return new Promise(r => {
|
|
132
|
-
if ((0, common_1.isCloudfareWorker)())
|
|
133
|
-
return (0, oninteractioncreate_1.onInteractionCreate)(this, rawBody, -1)
|
|
134
|
-
.then(() => r(new Response()))
|
|
135
|
-
.catch(() => r(new Response()));
|
|
136
|
-
return (0, oninteractioncreate_1.onInteractionCreate)(this, rawBody, -1, async ({ body, files }) => {
|
|
137
|
-
let response;
|
|
138
|
-
const headers = {};
|
|
139
|
-
if (files) {
|
|
140
|
-
response = new FormData();
|
|
141
|
-
for (const [index, file] of files.entries()) {
|
|
142
|
-
const fileKey = file.key ?? `files[${index}]`;
|
|
143
|
-
if ((0, utils_1.isBufferLike)(file.data)) {
|
|
144
|
-
let contentType = file.contentType;
|
|
145
|
-
if (!contentType) {
|
|
146
|
-
const [parsedType] = (0, magic_bytes_js_1.filetypeinfo)(file.data);
|
|
147
|
-
if (parsedType) {
|
|
148
|
-
contentType =
|
|
149
|
-
api_1.OverwrittenMimeTypes[parsedType.mime] ??
|
|
150
|
-
parsedType.mime ??
|
|
151
|
-
'application/octet-stream';
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
response.append(fileKey, new Blob([file.data], { type: contentType }), file.name);
|
|
155
|
-
}
|
|
156
|
-
else {
|
|
157
|
-
response.append(fileKey, new Blob([`${file.data}`], { type: file.contentType }), file.name);
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
if (body) {
|
|
161
|
-
response.append('payload_json', JSON.stringify(body));
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
else {
|
|
165
|
-
response = body ?? {};
|
|
166
|
-
headers['Content-Type'] = 'application/json';
|
|
167
|
-
}
|
|
168
|
-
r(response instanceof FormData
|
|
169
|
-
? new Response(response, { headers })
|
|
170
|
-
: Response.json(response, {
|
|
171
|
-
headers,
|
|
172
|
-
}));
|
|
173
|
-
});
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
async onPacket(res, req) {
|
|
178
|
-
const rawBody = await this.verifySignature(res, req);
|
|
179
|
-
if (rawBody) {
|
|
180
|
-
switch (rawBody.type) {
|
|
181
|
-
case v10_1.InteractionType.Ping:
|
|
182
|
-
this.debugger?.debug('Ping interaction received, responding.');
|
|
183
|
-
res
|
|
184
|
-
.writeHeader('Content-Type', 'application/json')
|
|
185
|
-
.end(JSON.stringify({ type: v10_1.InteractionResponseType.Pong }));
|
|
186
|
-
break;
|
|
187
|
-
default:
|
|
188
|
-
await (0, oninteractioncreate_1.onInteractionCreate)(this, rawBody, -1, async ({ body, files }) => {
|
|
189
|
-
res.cork(() => {
|
|
190
|
-
let response;
|
|
191
|
-
const headers = {};
|
|
192
|
-
if (files) {
|
|
193
|
-
response = new FormData();
|
|
194
|
-
for (const [index, file] of files.entries()) {
|
|
195
|
-
const fileKey = file.key ?? `files[${index}]`;
|
|
196
|
-
if ((0, utils_1.isBufferLike)(file.data)) {
|
|
197
|
-
let contentType = file.contentType;
|
|
198
|
-
if (!contentType) {
|
|
199
|
-
const [parsedType] = (0, magic_bytes_js_1.filetypeinfo)(file.data);
|
|
200
|
-
if (parsedType) {
|
|
201
|
-
contentType =
|
|
202
|
-
api_1.OverwrittenMimeTypes[parsedType.mime] ??
|
|
203
|
-
parsedType.mime ??
|
|
204
|
-
'application/octet-stream';
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
response.append(fileKey, new Blob([file.data], { type: contentType }), file.name);
|
|
208
|
-
}
|
|
209
|
-
else {
|
|
210
|
-
response.append(fileKey, new Blob([`${file.data}`], { type: file.contentType }), file.name);
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
if (body) {
|
|
214
|
-
response.append('payload_json', JSON.stringify(body));
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
else {
|
|
218
|
-
response = body ?? {};
|
|
219
|
-
headers['Content-Type'] = 'application/json';
|
|
220
|
-
}
|
|
221
|
-
for (const i in headers) {
|
|
222
|
-
res.writeHeader(i, headers[i]);
|
|
223
|
-
}
|
|
224
|
-
return res.end(JSON.stringify(response));
|
|
225
|
-
});
|
|
226
|
-
});
|
|
227
|
-
break;
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
else {
|
|
231
|
-
this.debugger?.debug('Invalid request/No info, returning 418 status.');
|
|
232
|
-
// I'm a teapot
|
|
233
|
-
res.writeStatus('418').end();
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
45
|
}
|
|
237
46
|
exports.HttpClient = HttpClient;
|
package/lib/client/index.d.ts
CHANGED
package/lib/client/index.js
CHANGED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { ChannelType } from '../types';
|
|
2
|
+
import { type CustomStructures, OptionResolver } from '../commands';
|
|
3
|
+
import { AnonymousGuild, AutoModerationRule, BaseChannel, BaseGuildChannel, CategoryChannel, ClientUser, DMChannel, DirectoryChannel, ForumChannel, Guild, GuildEmoji, GuildMember, GuildRole, GuildTemplate, InteractionGuildMember, MediaChannel, Message, NewsChannel, Poll, StageChannel, Sticker, TextGuildChannel, ThreadChannel, User, VoiceChannel, VoiceState, Webhook, WebhookMessage } from '../structures';
|
|
4
|
+
import type { StructStates } from '../common/';
|
|
5
|
+
import { GuildBan } from '../structures/GuildBan';
|
|
6
|
+
export type PollStructure = InferCustomStructure<Poll, 'Poll'>;
|
|
7
|
+
export type ClientUserStructure = InferCustomStructure<ClientUser, 'ClientUser'>;
|
|
8
|
+
export type AnonymousGuildStructure = InferCustomStructure<AnonymousGuild, 'AnonymousGuild'>;
|
|
9
|
+
export type AutoModerationRuleStructure = InferCustomStructure<AutoModerationRule, 'AutoModerationRule'>;
|
|
10
|
+
export type BaseChannelStructure = InferCustomStructure<BaseChannel<ChannelType>, 'BaseChannel'>;
|
|
11
|
+
export type BaseGuildChannelStructure = InferCustomStructure<BaseGuildChannel, 'BaseGuildChannel'>;
|
|
12
|
+
export type TextGuildChannelStructure = InferCustomStructure<TextGuildChannel, 'TextGuildChannel'>;
|
|
13
|
+
export type DMChannelStructure = InferCustomStructure<DMChannel, 'DMChannel'>;
|
|
14
|
+
export type VoiceChannelStructure = InferCustomStructure<VoiceChannel, 'VoiceChannel'>;
|
|
15
|
+
export type StageChannelStructure = InferCustomStructure<StageChannel, 'StageChannel'>;
|
|
16
|
+
export type MediaChannelStructure = InferCustomStructure<MediaChannel, 'MediaChannel'>;
|
|
17
|
+
export type ForumChannelStructure = InferCustomStructure<ForumChannel, 'ForumChannel'>;
|
|
18
|
+
export type ThreadChannelStructure = InferCustomStructure<ThreadChannel, 'ThreadChannel'>;
|
|
19
|
+
export type CategoryChannelStructure = InferCustomStructure<CategoryChannel, 'CategoryChannel'>;
|
|
20
|
+
export type NewsChannelStructure = InferCustomStructure<NewsChannel, 'NewsChannel'>;
|
|
21
|
+
export type DirectoryChannelStructure = InferCustomStructure<DirectoryChannel, 'DirectoryChannel'>;
|
|
22
|
+
export type GuildStructure<State extends StructStates = 'api'> = InferCustomStructure<Guild<State>, 'Guild'>;
|
|
23
|
+
export type GuildBanStructure = InferCustomStructure<GuildBan, 'GuildBan'>;
|
|
24
|
+
export type GuildEmojiStructure = InferCustomStructure<GuildEmoji, 'GuildEmoji'>;
|
|
25
|
+
export type GuildMemberStructure = InferCustomStructure<GuildMember, 'GuildMember'>;
|
|
26
|
+
export type InteractionGuildMemberStructure = InferCustomStructure<InteractionGuildMember, 'InteractionGuildMember'>;
|
|
27
|
+
export type GuildRoleStructure = InferCustomStructure<GuildRole, 'GuildRole'>;
|
|
28
|
+
export type GuildTemplateStructure = InferCustomStructure<GuildTemplate, 'GuildTemplate'>;
|
|
29
|
+
export type MessageStructure = InferCustomStructure<Message, 'Message'>;
|
|
30
|
+
export type WebhookMessageStructure = InferCustomStructure<WebhookMessage, 'WebhookMessage'>;
|
|
31
|
+
export type StickerStructure = InferCustomStructure<Sticker, 'Sticker'>;
|
|
32
|
+
export type UserStructure = InferCustomStructure<User, 'User'>;
|
|
33
|
+
export type VoiceStateStructure = InferCustomStructure<VoiceState, 'VoiceState'>;
|
|
34
|
+
export type WebhookStructure = InferCustomStructure<Webhook, 'Webhook'>;
|
|
35
|
+
export type OptionResolverStructure = InferCustomStructure<OptionResolver, 'OptionResolver'>;
|
|
36
|
+
export declare class Transformers {
|
|
37
|
+
static AnonymousGuild(...args: ConstructorParameters<typeof AnonymousGuild>): AnonymousGuildStructure;
|
|
38
|
+
static AutoModerationRule(...args: ConstructorParameters<typeof AutoModerationRule>): AutoModerationRuleStructure;
|
|
39
|
+
static BaseChannel(...args: ConstructorParameters<typeof BaseChannel>): BaseChannelStructure;
|
|
40
|
+
static BaseGuildChannel(...args: ConstructorParameters<typeof BaseGuildChannel>): BaseGuildChannelStructure;
|
|
41
|
+
static TextGuildChannel(...args: ConstructorParameters<typeof TextGuildChannel>): TextGuildChannelStructure;
|
|
42
|
+
static DMChannel(...args: ConstructorParameters<typeof DMChannel>): DMChannelStructure;
|
|
43
|
+
static VoiceChannel(...args: ConstructorParameters<typeof VoiceChannel>): VoiceChannelStructure;
|
|
44
|
+
static StageChannel(...args: ConstructorParameters<typeof StageChannel>): StageChannelStructure;
|
|
45
|
+
static MediaChannel(...args: ConstructorParameters<typeof MediaChannel>): MediaChannelStructure;
|
|
46
|
+
static ForumChannel(...args: ConstructorParameters<typeof ForumChannel>): ForumChannelStructure;
|
|
47
|
+
static ThreadChannel(...args: ConstructorParameters<typeof ThreadChannel>): ThreadChannelStructure;
|
|
48
|
+
static CategoryChannel(...args: ConstructorParameters<typeof CategoryChannel>): CategoryChannelStructure;
|
|
49
|
+
static NewsChannel(...args: ConstructorParameters<typeof NewsChannel>): NewsChannelStructure;
|
|
50
|
+
static DirectoryChannel(...args: ConstructorParameters<typeof DirectoryChannel>): DirectoryChannelStructure;
|
|
51
|
+
static ClientUser(...args: ConstructorParameters<typeof ClientUser>): ClientUserStructure;
|
|
52
|
+
static Guild<State extends StructStates = 'api'>(...args: ConstructorParameters<typeof Guild>): GuildStructure<State>;
|
|
53
|
+
static GuildBan(...args: ConstructorParameters<typeof GuildBan>): GuildBanStructure;
|
|
54
|
+
static GuildEmoji(...args: ConstructorParameters<typeof GuildEmoji>): GuildEmojiStructure;
|
|
55
|
+
static GuildMember(...args: ConstructorParameters<typeof GuildMember>): GuildMemberStructure;
|
|
56
|
+
static InteractionGuildMember(...args: ConstructorParameters<typeof InteractionGuildMember>): InteractionGuildMemberStructure;
|
|
57
|
+
static GuildRole(...args: ConstructorParameters<typeof GuildRole>): GuildRoleStructure;
|
|
58
|
+
static GuildTemplate(...args: ConstructorParameters<typeof GuildTemplate>): GuildTemplateStructure;
|
|
59
|
+
static Message(...args: ConstructorParameters<typeof Message>): MessageStructure;
|
|
60
|
+
static WebhookMessage(...args: ConstructorParameters<typeof WebhookMessage>): WebhookMessageStructure;
|
|
61
|
+
static Poll(...args: ConstructorParameters<typeof Poll>): PollStructure;
|
|
62
|
+
static Sticker(...args: ConstructorParameters<typeof Sticker>): StickerStructure;
|
|
63
|
+
static User(...args: ConstructorParameters<typeof User>): UserStructure;
|
|
64
|
+
static VoiceState(...args: ConstructorParameters<typeof VoiceState>): VoiceStateStructure;
|
|
65
|
+
static Webhook(...args: ConstructorParameters<typeof Webhook>): WebhookStructure;
|
|
66
|
+
static OptionResolver(...args: ConstructorParameters<typeof OptionResolver>): OptionResolverStructure;
|
|
67
|
+
}
|
|
68
|
+
export type InferCustomStructure<T, N extends string> = CustomStructures extends Record<N, infer P> ? P : T;
|