@mostfeatured/dbi 0.1.46 → 0.2.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/dist/src/DBI.d.ts.map +1 -0
- package/dist/src/DBI.js.map +1 -0
- package/dist/src/Events.d.ts.map +1 -0
- package/dist/src/Events.js.map +1 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/methods/handleMessageCommands.d.ts.map +1 -0
- package/dist/src/methods/handleMessageCommands.js.map +1 -0
- package/dist/src/methods/hookEventListeners.d.ts.map +1 -0
- package/dist/src/methods/hookEventListeners.js.map +1 -0
- package/dist/src/methods/hookInteractionListeners.d.ts.map +1 -0
- package/dist/{methods → src/methods}/hookInteractionListeners.js +22 -12
- package/dist/src/methods/hookInteractionListeners.js.map +1 -0
- package/dist/src/methods/publishInteractions.d.ts.map +1 -0
- package/dist/src/methods/publishInteractions.js.map +1 -0
- package/dist/src/types/ApplicationRoleConnectionMetadata.d.ts.map +1 -0
- package/dist/src/types/ApplicationRoleConnectionMetadata.js.map +1 -0
- package/dist/src/types/Builders/ButtonBuilder.d.ts.map +1 -0
- package/dist/src/types/Builders/ButtonBuilder.js.map +1 -0
- package/dist/src/types/Builders/ChannelSelectMenuBuilder.d.ts.map +1 -0
- package/dist/src/types/Builders/ChannelSelectMenuBuilder.js.map +1 -0
- package/dist/src/types/Builders/MentionableSelectMenuBuilder.d.ts.map +1 -0
- package/dist/src/types/Builders/MentionableSelectMenuBuilder.js.map +1 -0
- package/dist/src/types/Builders/ModalBuilder.d.ts.map +1 -0
- package/dist/src/types/Builders/ModalBuilder.js.map +1 -0
- package/dist/src/types/Builders/RoleSelectMenuBuilder.d.ts.map +1 -0
- package/dist/src/types/Builders/RoleSelectMenuBuilder.js.map +1 -0
- package/dist/src/types/Builders/StringSelectMenuBuilder.d.ts.map +1 -0
- package/dist/src/types/Builders/StringSelectMenuBuilder.js.map +1 -0
- package/dist/src/types/Builders/UserSelectMenuBuilder.d.ts.map +1 -0
- package/dist/src/types/Builders/UserSelectMenuBuilder.js.map +1 -0
- package/dist/src/types/ChatInput/ChatInput.d.ts.map +1 -0
- package/dist/src/types/ChatInput/ChatInput.js.map +1 -0
- package/dist/{types → src/types}/ChatInput/ChatInputOptions.d.ts +2 -2
- package/dist/src/types/ChatInput/ChatInputOptions.d.ts.map +1 -0
- package/dist/src/types/ChatInput/ChatInputOptions.js.map +1 -0
- package/dist/src/types/Components/Button.d.ts.map +1 -0
- package/dist/src/types/Components/Button.js.map +1 -0
- package/dist/src/types/Components/ChannelSelectMenu.d.ts.map +1 -0
- package/dist/src/types/Components/ChannelSelectMenu.js.map +1 -0
- package/dist/src/types/Components/HTMLComponentsV2/HTMLComponentsV2Handlers.d.ts.map +1 -0
- package/dist/src/types/Components/HTMLComponentsV2/HTMLComponentsV2Handlers.js.map +1 -0
- package/dist/src/types/Components/HTMLComponentsV2/index.d.ts +91 -0
- package/dist/src/types/Components/HTMLComponentsV2/index.d.ts.map +1 -0
- package/dist/src/types/Components/HTMLComponentsV2/index.js +300 -0
- package/dist/src/types/Components/HTMLComponentsV2/index.js.map +1 -0
- package/dist/src/types/Components/HTMLComponentsV2/parser.d.ts.map +1 -0
- package/dist/{types → src/types}/Components/HTMLComponentsV2/parser.js +11 -4
- package/dist/src/types/Components/HTMLComponentsV2/parser.js.map +1 -0
- package/dist/src/types/Components/HTMLComponentsV2/svelteParser.d.ts +35 -0
- package/dist/src/types/Components/HTMLComponentsV2/svelteParser.d.ts.map +1 -0
- package/dist/src/types/Components/HTMLComponentsV2/svelteParser.js +822 -0
- package/dist/src/types/Components/HTMLComponentsV2/svelteParser.js.map +1 -0
- package/dist/src/types/Components/HTMLComponentsV2/svelteRenderer.d.ts +24 -0
- package/dist/src/types/Components/HTMLComponentsV2/svelteRenderer.d.ts.map +1 -0
- package/dist/src/types/Components/HTMLComponentsV2/svelteRenderer.js +294 -0
- package/dist/src/types/Components/HTMLComponentsV2/svelteRenderer.js.map +1 -0
- package/dist/src/types/Components/MentionableSelectMenu.d.ts.map +1 -0
- package/dist/src/types/Components/MentionableSelectMenu.js.map +1 -0
- package/dist/src/types/Components/Modal.d.ts.map +1 -0
- package/dist/src/types/Components/Modal.js.map +1 -0
- package/dist/src/types/Components/RoleSelectMenu.d.ts.map +1 -0
- package/dist/src/types/Components/RoleSelectMenu.js.map +1 -0
- package/dist/src/types/Components/StringSelectMenu.d.ts.map +1 -0
- package/dist/src/types/Components/StringSelectMenu.js.map +1 -0
- package/dist/src/types/Components/UserSelectMenu.d.ts.map +1 -0
- package/dist/src/types/Components/UserSelectMenu.js.map +1 -0
- package/dist/src/types/Event.d.ts.map +1 -0
- package/dist/src/types/Event.js.map +1 -0
- package/dist/src/types/Interaction.d.ts.map +1 -0
- package/dist/src/types/Interaction.js.map +1 -0
- package/dist/src/types/other/CustomEvent.d.ts.map +1 -0
- package/dist/src/types/other/CustomEvent.js.map +1 -0
- package/dist/src/types/other/FakeMessageInteraction.d.ts.map +1 -0
- package/dist/src/types/other/FakeMessageInteraction.js.map +1 -0
- package/dist/src/types/other/InteractionLocale.d.ts.map +1 -0
- package/dist/src/types/other/InteractionLocale.js.map +1 -0
- package/dist/src/types/other/Locale.d.ts.map +1 -0
- package/dist/src/types/other/Locale.js.map +1 -0
- package/dist/src/types/other/MessageContextMenu.d.ts.map +1 -0
- package/dist/src/types/other/MessageContextMenu.js.map +1 -0
- package/dist/src/types/other/UserContextMenu.d.ts.map +1 -0
- package/dist/src/types/other/UserContextMenu.js.map +1 -0
- package/dist/src/utils/MemoryStore.d.ts.map +1 -0
- package/dist/src/utils/MemoryStore.js.map +1 -0
- package/dist/src/utils/UtilTypes.d.ts.map +1 -0
- package/dist/src/utils/UtilTypes.js.map +1 -0
- package/dist/src/utils/customId.d.ts.map +1 -0
- package/dist/src/utils/customId.js.map +1 -0
- package/dist/src/utils/permissions.d.ts.map +1 -0
- package/dist/src/utils/permissions.js.map +1 -0
- package/dist/src/utils/recursiveImport.d.ts.map +1 -0
- package/dist/src/utils/recursiveImport.js.map +1 -0
- package/dist/src/utils/recursiveUnload.d.ts.map +1 -0
- package/dist/src/utils/recursiveUnload.js.map +1 -0
- package/dist/src/utils/unloadModule.d.ts.map +1 -0
- package/dist/src/utils/unloadModule.js.map +1 -0
- package/dist/test/index.d.ts +2 -0
- package/dist/test/index.d.ts.map +1 -0
- package/dist/test/index.js +103 -0
- package/dist/test/index.js.map +1 -0
- package/docs/ADVANCED_FEATURES.md +836 -0
- package/docs/API_REFERENCE.md +925 -0
- package/docs/CHAT_INPUT.md +807 -0
- package/docs/COMPONENTS.md +1035 -0
- package/docs/EVENTS.md +564 -0
- package/docs/GETTING_STARTED.md +394 -0
- package/docs/LOCALIZATION.md +773 -0
- package/docs/README.md +341 -0
- package/docs/SVELTE_COMPONENTS.md +955 -0
- package/generated/globals.d.ts +1 -0
- package/generated/index.d.ts +30 -0
- package/generated/svelte-dbi.d.ts +588 -0
- package/package.json +57 -47
- package/readme.md +168 -491
- package/src/methods/hookInteractionListeners.ts +23 -12
- package/src/types/Components/HTMLComponentsV2/index.ts +353 -12
- package/src/types/Components/HTMLComponentsV2/parser.ts +14 -4
- package/src/types/Components/HTMLComponentsV2/svelteParser.ts +904 -0
- package/src/types/Components/HTMLComponentsV2/svelteRenderer.ts +332 -0
- package/test/index.ts +105 -0
- package/test/product-showcase.svelte +199 -0
- package/tsconfig.json +13 -3
- package/dist/DBI.d.ts.map +0 -1
- package/dist/DBI.js.map +0 -1
- package/dist/Events.d.ts.map +0 -1
- package/dist/Events.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/methods/handleMessageCommands.d.ts.map +0 -1
- package/dist/methods/handleMessageCommands.js.map +0 -1
- package/dist/methods/hookEventListeners.d.ts.map +0 -1
- package/dist/methods/hookEventListeners.js.map +0 -1
- package/dist/methods/hookInteractionListeners.d.ts.map +0 -1
- package/dist/methods/hookInteractionListeners.js.map +0 -1
- package/dist/methods/publishInteractions.d.ts.map +0 -1
- package/dist/methods/publishInteractions.js.map +0 -1
- package/dist/types/ApplicationRoleConnectionMetadata.d.ts.map +0 -1
- package/dist/types/ApplicationRoleConnectionMetadata.js.map +0 -1
- package/dist/types/Builders/ButtonBuilder.d.ts.map +0 -1
- package/dist/types/Builders/ButtonBuilder.js.map +0 -1
- package/dist/types/Builders/ChannelSelectMenuBuilder.d.ts.map +0 -1
- package/dist/types/Builders/ChannelSelectMenuBuilder.js.map +0 -1
- package/dist/types/Builders/MentionableSelectMenuBuilder.d.ts.map +0 -1
- package/dist/types/Builders/MentionableSelectMenuBuilder.js.map +0 -1
- package/dist/types/Builders/ModalBuilder.d.ts.map +0 -1
- package/dist/types/Builders/ModalBuilder.js.map +0 -1
- package/dist/types/Builders/RoleSelectMenuBuilder.d.ts.map +0 -1
- package/dist/types/Builders/RoleSelectMenuBuilder.js.map +0 -1
- package/dist/types/Builders/StringSelectMenuBuilder.d.ts.map +0 -1
- package/dist/types/Builders/StringSelectMenuBuilder.js.map +0 -1
- package/dist/types/Builders/UserSelectMenuBuilder.d.ts.map +0 -1
- package/dist/types/Builders/UserSelectMenuBuilder.js.map +0 -1
- package/dist/types/ChatInput/ChatInput.d.ts.map +0 -1
- package/dist/types/ChatInput/ChatInput.js.map +0 -1
- package/dist/types/ChatInput/ChatInputOptions.d.ts.map +0 -1
- package/dist/types/ChatInput/ChatInputOptions.js.map +0 -1
- package/dist/types/Components/Button.d.ts.map +0 -1
- package/dist/types/Components/Button.js.map +0 -1
- package/dist/types/Components/ChannelSelectMenu.d.ts.map +0 -1
- package/dist/types/Components/ChannelSelectMenu.js.map +0 -1
- package/dist/types/Components/HTMLComponentsV2/HTMLComponentsV2Handlers.d.ts.map +0 -1
- package/dist/types/Components/HTMLComponentsV2/HTMLComponentsV2Handlers.js.map +0 -1
- package/dist/types/Components/HTMLComponentsV2/index.d.ts +0 -19
- package/dist/types/Components/HTMLComponentsV2/index.d.ts.map +0 -1
- package/dist/types/Components/HTMLComponentsV2/index.js +0 -31
- package/dist/types/Components/HTMLComponentsV2/index.js.map +0 -1
- package/dist/types/Components/HTMLComponentsV2/parser.d.ts.map +0 -1
- package/dist/types/Components/HTMLComponentsV2/parser.js.map +0 -1
- package/dist/types/Components/MentionableSelectMenu.d.ts.map +0 -1
- package/dist/types/Components/MentionableSelectMenu.js.map +0 -1
- package/dist/types/Components/Modal.d.ts.map +0 -1
- package/dist/types/Components/Modal.js.map +0 -1
- package/dist/types/Components/RoleSelectMenu.d.ts.map +0 -1
- package/dist/types/Components/RoleSelectMenu.js.map +0 -1
- package/dist/types/Components/StringSelectMenu.d.ts.map +0 -1
- package/dist/types/Components/StringSelectMenu.js.map +0 -1
- package/dist/types/Components/UserSelectMenu.d.ts.map +0 -1
- package/dist/types/Components/UserSelectMenu.js.map +0 -1
- package/dist/types/Event.d.ts.map +0 -1
- package/dist/types/Event.js.map +0 -1
- package/dist/types/Interaction.d.ts.map +0 -1
- package/dist/types/Interaction.js.map +0 -1
- package/dist/types/other/CustomEvent.d.ts.map +0 -1
- package/dist/types/other/CustomEvent.js.map +0 -1
- package/dist/types/other/FakeMessageInteraction.d.ts.map +0 -1
- package/dist/types/other/FakeMessageInteraction.js.map +0 -1
- package/dist/types/other/InteractionLocale.d.ts.map +0 -1
- package/dist/types/other/InteractionLocale.js.map +0 -1
- package/dist/types/other/Locale.d.ts.map +0 -1
- package/dist/types/other/Locale.js.map +0 -1
- package/dist/types/other/MessageContextMenu.d.ts.map +0 -1
- package/dist/types/other/MessageContextMenu.js.map +0 -1
- package/dist/types/other/UserContextMenu.d.ts.map +0 -1
- package/dist/types/other/UserContextMenu.js.map +0 -1
- package/dist/utils/MemoryStore.d.ts.map +0 -1
- package/dist/utils/MemoryStore.js.map +0 -1
- package/dist/utils/UtilTypes.d.ts.map +0 -1
- package/dist/utils/UtilTypes.js.map +0 -1
- package/dist/utils/customId.d.ts.map +0 -1
- package/dist/utils/customId.js.map +0 -1
- package/dist/utils/permissions.d.ts.map +0 -1
- package/dist/utils/permissions.js.map +0 -1
- package/dist/utils/recursiveImport.d.ts.map +0 -1
- package/dist/utils/recursiveImport.js.map +0 -1
- package/dist/utils/recursiveUnload.d.ts.map +0 -1
- package/dist/utils/recursiveUnload.js.map +0 -1
- package/dist/utils/unloadModule.d.ts.map +0 -1
- package/dist/utils/unloadModule.js.map +0 -1
- package/examples/modal/dbi.js +0 -30
- package/examples/modal/login.js +0 -15
- package/examples/modal/package.json +0 -15
- package/examples/modal/publish.js +0 -13
- package/examples/modal/src/chatInput.js +0 -38
- package/examples/modal/src/components.js +0 -33
- package/examples/modal/src/event.js +0 -20
- package/examples/modal/src/interactionlocales.js +0 -24
- package/examples/modal/src/locales.js +0 -38
- package/examples/modal/src/modal.js +0 -28
- /package/dist/{DBI.d.ts → src/DBI.d.ts} +0 -0
- /package/dist/{DBI.js → src/DBI.js} +0 -0
- /package/dist/{Events.d.ts → src/Events.d.ts} +0 -0
- /package/dist/{Events.js → src/Events.js} +0 -0
- /package/dist/{data → src/data}/eventMap.json +0 -0
- /package/dist/{index.d.ts → src/index.d.ts} +0 -0
- /package/dist/{index.js → src/index.js} +0 -0
- /package/dist/{methods → src/methods}/handleMessageCommands.d.ts +0 -0
- /package/dist/{methods → src/methods}/handleMessageCommands.js +0 -0
- /package/dist/{methods → src/methods}/hookEventListeners.d.ts +0 -0
- /package/dist/{methods → src/methods}/hookEventListeners.js +0 -0
- /package/dist/{methods → src/methods}/hookInteractionListeners.d.ts +0 -0
- /package/dist/{methods → src/methods}/publishInteractions.d.ts +0 -0
- /package/dist/{methods → src/methods}/publishInteractions.js +0 -0
- /package/dist/{types → src/types}/ApplicationRoleConnectionMetadata.d.ts +0 -0
- /package/dist/{types → src/types}/ApplicationRoleConnectionMetadata.js +0 -0
- /package/dist/{types → src/types}/Builders/ButtonBuilder.d.ts +0 -0
- /package/dist/{types → src/types}/Builders/ButtonBuilder.js +0 -0
- /package/dist/{types → src/types}/Builders/ChannelSelectMenuBuilder.d.ts +0 -0
- /package/dist/{types → src/types}/Builders/ChannelSelectMenuBuilder.js +0 -0
- /package/dist/{types → src/types}/Builders/MentionableSelectMenuBuilder.d.ts +0 -0
- /package/dist/{types → src/types}/Builders/MentionableSelectMenuBuilder.js +0 -0
- /package/dist/{types → src/types}/Builders/ModalBuilder.d.ts +0 -0
- /package/dist/{types → src/types}/Builders/ModalBuilder.js +0 -0
- /package/dist/{types → src/types}/Builders/RoleSelectMenuBuilder.d.ts +0 -0
- /package/dist/{types → src/types}/Builders/RoleSelectMenuBuilder.js +0 -0
- /package/dist/{types → src/types}/Builders/StringSelectMenuBuilder.d.ts +0 -0
- /package/dist/{types → src/types}/Builders/StringSelectMenuBuilder.js +0 -0
- /package/dist/{types → src/types}/Builders/UserSelectMenuBuilder.d.ts +0 -0
- /package/dist/{types → src/types}/Builders/UserSelectMenuBuilder.js +0 -0
- /package/dist/{types → src/types}/ChatInput/ChatInput.d.ts +0 -0
- /package/dist/{types → src/types}/ChatInput/ChatInput.js +0 -0
- /package/dist/{types → src/types}/ChatInput/ChatInputOptions.js +0 -0
- /package/dist/{types → src/types}/Components/Button.d.ts +0 -0
- /package/dist/{types → src/types}/Components/Button.js +0 -0
- /package/dist/{types → src/types}/Components/ChannelSelectMenu.d.ts +0 -0
- /package/dist/{types → src/types}/Components/ChannelSelectMenu.js +0 -0
- /package/dist/{types → src/types}/Components/HTMLComponentsV2/HTMLComponentsV2Handlers.d.ts +0 -0
- /package/dist/{types → src/types}/Components/HTMLComponentsV2/HTMLComponentsV2Handlers.js +0 -0
- /package/dist/{types → src/types}/Components/HTMLComponentsV2/parser.d.ts +0 -0
- /package/dist/{types → src/types}/Components/MentionableSelectMenu.d.ts +0 -0
- /package/dist/{types → src/types}/Components/MentionableSelectMenu.js +0 -0
- /package/dist/{types → src/types}/Components/Modal.d.ts +0 -0
- /package/dist/{types → src/types}/Components/Modal.js +0 -0
- /package/dist/{types → src/types}/Components/RoleSelectMenu.d.ts +0 -0
- /package/dist/{types → src/types}/Components/RoleSelectMenu.js +0 -0
- /package/dist/{types → src/types}/Components/StringSelectMenu.d.ts +0 -0
- /package/dist/{types → src/types}/Components/StringSelectMenu.js +0 -0
- /package/dist/{types → src/types}/Components/UserSelectMenu.d.ts +0 -0
- /package/dist/{types → src/types}/Components/UserSelectMenu.js +0 -0
- /package/dist/{types → src/types}/Event.d.ts +0 -0
- /package/dist/{types → src/types}/Event.js +0 -0
- /package/dist/{types → src/types}/Interaction.d.ts +0 -0
- /package/dist/{types → src/types}/Interaction.js +0 -0
- /package/dist/{types → src/types}/other/CustomEvent.d.ts +0 -0
- /package/dist/{types → src/types}/other/CustomEvent.js +0 -0
- /package/dist/{types → src/types}/other/FakeMessageInteraction.d.ts +0 -0
- /package/dist/{types → src/types}/other/FakeMessageInteraction.js +0 -0
- /package/dist/{types → src/types}/other/InteractionLocale.d.ts +0 -0
- /package/dist/{types → src/types}/other/InteractionLocale.js +0 -0
- /package/dist/{types → src/types}/other/Locale.d.ts +0 -0
- /package/dist/{types → src/types}/other/Locale.js +0 -0
- /package/dist/{types → src/types}/other/MessageContextMenu.d.ts +0 -0
- /package/dist/{types → src/types}/other/MessageContextMenu.js +0 -0
- /package/dist/{types → src/types}/other/UserContextMenu.d.ts +0 -0
- /package/dist/{types → src/types}/other/UserContextMenu.js +0 -0
- /package/dist/{utils → src/utils}/MemoryStore.d.ts +0 -0
- /package/dist/{utils → src/utils}/MemoryStore.js +0 -0
- /package/dist/{utils → src/utils}/UtilTypes.d.ts +0 -0
- /package/dist/{utils → src/utils}/UtilTypes.js +0 -0
- /package/dist/{utils → src/utils}/customId.d.ts +0 -0
- /package/dist/{utils → src/utils}/customId.js +0 -0
- /package/dist/{utils → src/utils}/permissions.d.ts +0 -0
- /package/dist/{utils → src/utils}/permissions.js +0 -0
- /package/dist/{utils → src/utils}/recursiveImport.d.ts +0 -0
- /package/dist/{utils → src/utils}/recursiveImport.js +0 -0
- /package/dist/{utils → src/utils}/recursiveUnload.d.ts +0 -0
- /package/dist/{utils → src/utils}/recursiveUnload.js +0 -0
- /package/dist/{utils → src/utils}/unloadModule.d.ts +0 -0
- /package/dist/{utils → src/utils}/unloadModule.js +0 -0
package/docs/EVENTS.md
ADDED
|
@@ -0,0 +1,564 @@
|
|
|
1
|
+
# Events Guide
|
|
2
|
+
|
|
3
|
+
DBI provides a powerful event system for handling both Discord events and custom events. This guide covers how to work with events effectively.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Table of Contents
|
|
8
|
+
|
|
9
|
+
- [Basic Events](#basic-events)
|
|
10
|
+
- [Multiple Event Handlers](#multiple-event-handlers)
|
|
11
|
+
- [Event Configuration](#event-configuration)
|
|
12
|
+
- [Custom Events](#custom-events)
|
|
13
|
+
- [DBI Events](#dbi-events)
|
|
14
|
+
- [Event Order and Flow](#event-order-and-flow)
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Basic Events
|
|
19
|
+
|
|
20
|
+
### Simple Event Handler
|
|
21
|
+
|
|
22
|
+
```javascript
|
|
23
|
+
dbi.register(({ Event }) => {
|
|
24
|
+
Event({
|
|
25
|
+
name: "clientReady", // Discord.js event name
|
|
26
|
+
id: "ready-logger", // Unique ID for this handler
|
|
27
|
+
|
|
28
|
+
onExecute({ client }) {
|
|
29
|
+
console.log(`✅ Bot is online as ${client.user.tag}`);
|
|
30
|
+
console.log(`📊 Serving ${client.guilds.cache.size} guilds`);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Event Parameters
|
|
37
|
+
|
|
38
|
+
Each event receives its parameters in an object format:
|
|
39
|
+
|
|
40
|
+
```javascript
|
|
41
|
+
dbi.register(({ Event }) => {
|
|
42
|
+
// Message events
|
|
43
|
+
Event({
|
|
44
|
+
name: "messageCreate",
|
|
45
|
+
id: "message-logger",
|
|
46
|
+
|
|
47
|
+
onExecute({ message }) {
|
|
48
|
+
if (message.author.bot) return;
|
|
49
|
+
console.log(`[${message.guild?.name}] ${message.author.tag}: ${message.content}`);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
// Member events
|
|
54
|
+
Event({
|
|
55
|
+
name: "guildMemberAdd",
|
|
56
|
+
id: "welcome-handler",
|
|
57
|
+
|
|
58
|
+
async onExecute({ member }) {
|
|
59
|
+
const channel = member.guild.systemChannel;
|
|
60
|
+
if (channel) {
|
|
61
|
+
await channel.send(`Welcome ${member}! 👋`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
// Reaction events
|
|
67
|
+
Event({
|
|
68
|
+
name: "messageReactionAdd",
|
|
69
|
+
id: "reaction-roles",
|
|
70
|
+
|
|
71
|
+
onExecute({ reaction, user }) {
|
|
72
|
+
if (user.bot) return;
|
|
73
|
+
console.log(`${user.tag} reacted with ${reaction.emoji.name}`);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Common Events Reference
|
|
80
|
+
|
|
81
|
+
| Event Name | Parameters | Description |
|
|
82
|
+
|------------|------------|-------------|
|
|
83
|
+
| `clientReady` | `{ client }` | Bot is connected and ready |
|
|
84
|
+
| `messageCreate` | `{ message }` | New message received |
|
|
85
|
+
| `messageDelete` | `{ message }` | Message was deleted |
|
|
86
|
+
| `messageUpdate` | `{ oldMessage, newMessage }` | Message was edited |
|
|
87
|
+
| `guildCreate` | `{ guild }` | Bot joined a guild |
|
|
88
|
+
| `guildDelete` | `{ guild }` | Bot left a guild |
|
|
89
|
+
| `guildMemberAdd` | `{ member }` | Member joined guild |
|
|
90
|
+
| `guildMemberRemove` | `{ member }` | Member left guild |
|
|
91
|
+
| `guildMemberUpdate` | `{ oldMember, newMember }` | Member updated |
|
|
92
|
+
| `interactionCreate` | `{ interaction }` | Any interaction received |
|
|
93
|
+
| `voiceStateUpdate` | `{ oldState, newState }` | Voice state changed |
|
|
94
|
+
| `channelCreate` | `{ channel }` | Channel created |
|
|
95
|
+
| `channelDelete` | `{ channel }` | Channel deleted |
|
|
96
|
+
| `roleCreate` | `{ role }` | Role created |
|
|
97
|
+
| `roleDelete` | `{ role }` | Role deleted |
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## Multiple Event Handlers
|
|
102
|
+
|
|
103
|
+
You can register multiple handlers for the same event using unique IDs.
|
|
104
|
+
|
|
105
|
+
### Multiple Handlers
|
|
106
|
+
|
|
107
|
+
```javascript
|
|
108
|
+
dbi.register(({ Event }) => {
|
|
109
|
+
// First handler - logging
|
|
110
|
+
Event({
|
|
111
|
+
name: "messageCreate",
|
|
112
|
+
id: "message-logger",
|
|
113
|
+
|
|
114
|
+
onExecute({ message }) {
|
|
115
|
+
console.log(`Message: ${message.id}`);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
// Second handler - auto-moderation
|
|
120
|
+
Event({
|
|
121
|
+
name: "messageCreate",
|
|
122
|
+
id: "auto-mod",
|
|
123
|
+
|
|
124
|
+
onExecute({ message }) {
|
|
125
|
+
if (containsBadWords(message.content)) {
|
|
126
|
+
message.delete();
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
// Third handler - leveling system
|
|
132
|
+
Event({
|
|
133
|
+
name: "messageCreate",
|
|
134
|
+
id: "leveling",
|
|
135
|
+
|
|
136
|
+
async onExecute({ message }) {
|
|
137
|
+
if (message.author.bot) return;
|
|
138
|
+
await addXP(message.author.id, 10);
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### Toggling Event Handlers
|
|
145
|
+
|
|
146
|
+
```javascript
|
|
147
|
+
dbi.register(({ Event }) => {
|
|
148
|
+
Event({
|
|
149
|
+
name: "messageCreate",
|
|
150
|
+
id: "togglable-logger",
|
|
151
|
+
disabled: false, // Can start disabled
|
|
152
|
+
|
|
153
|
+
onExecute({ message }) {
|
|
154
|
+
console.log(message.content);
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
// Toggle the handler programmatically
|
|
160
|
+
const handler = dbi.event("togglable-logger");
|
|
161
|
+
|
|
162
|
+
handler.toggle(); // Toggle state
|
|
163
|
+
handler.toggle(true); // Disable
|
|
164
|
+
handler.toggle(false); // Enable
|
|
165
|
+
|
|
166
|
+
console.log(handler.disabled); // Check state
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## Event Configuration
|
|
172
|
+
|
|
173
|
+
### Trigger Types
|
|
174
|
+
|
|
175
|
+
Control how events are handled across multiple clients:
|
|
176
|
+
|
|
177
|
+
```javascript
|
|
178
|
+
dbi.register(({ Event }) => {
|
|
179
|
+
Event({
|
|
180
|
+
name: "messageCreate",
|
|
181
|
+
id: "my-handler",
|
|
182
|
+
|
|
183
|
+
// "OneByOne" - Each client triggers sequentially
|
|
184
|
+
// "OneByOneGlobal" - Global sequential (default)
|
|
185
|
+
// "Random" - Random client handles
|
|
186
|
+
// "First" - First client only
|
|
187
|
+
triggerType: "OneByOneGlobal",
|
|
188
|
+
|
|
189
|
+
onExecute({ message, nextClient }) {
|
|
190
|
+
// nextClient is available for multi-client setups
|
|
191
|
+
console.log(`Handled by: ${nextClient?.namespace}`);
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
});
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### Ordered Execution
|
|
198
|
+
|
|
199
|
+
Control execution order with delays:
|
|
200
|
+
|
|
201
|
+
```javascript
|
|
202
|
+
dbi.register(({ Event }) => {
|
|
203
|
+
Event({
|
|
204
|
+
name: "messageCreate",
|
|
205
|
+
id: "ordered-handler",
|
|
206
|
+
|
|
207
|
+
ordered: {
|
|
208
|
+
await: true, // Wait for async completion
|
|
209
|
+
delayBefore: 100, // Wait 100ms before executing
|
|
210
|
+
delayAfter: 50 // Wait 50ms after executing
|
|
211
|
+
},
|
|
212
|
+
|
|
213
|
+
async onExecute({ message }) {
|
|
214
|
+
await doAsyncWork(message);
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
});
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### Conditional Loading with Flags
|
|
221
|
+
|
|
222
|
+
```javascript
|
|
223
|
+
dbi.register(({ Event }) => {
|
|
224
|
+
Event({
|
|
225
|
+
name: "messageCreate",
|
|
226
|
+
id: "debug-logger",
|
|
227
|
+
flag: "debug", // Only load with debug flag
|
|
228
|
+
|
|
229
|
+
onExecute({ message }) {
|
|
230
|
+
console.log("[DEBUG]", message);
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
// Load with debug events
|
|
236
|
+
await dbi.load("debug");
|
|
237
|
+
|
|
238
|
+
// Load without debug events
|
|
239
|
+
await dbi.load();
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### Event TTL (Inline Events)
|
|
243
|
+
|
|
244
|
+
```javascript
|
|
245
|
+
dbi.register(({ createInlineEvent }) => {
|
|
246
|
+
// Create a temporary event that auto-removes
|
|
247
|
+
createInlineEvent({
|
|
248
|
+
name: "messageCreate",
|
|
249
|
+
ttl: 60000, // Auto-remove after 1 minute
|
|
250
|
+
|
|
251
|
+
onExecute({ message }) {
|
|
252
|
+
if (message.content === "special") {
|
|
253
|
+
message.reply("You found it!");
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
});
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## Custom Events
|
|
263
|
+
|
|
264
|
+
Define your own events that can be triggered programmatically.
|
|
265
|
+
|
|
266
|
+
### Defining Custom Events
|
|
267
|
+
|
|
268
|
+
```javascript
|
|
269
|
+
dbi.register(({ CustomEvent, Event }) => {
|
|
270
|
+
// Define a custom event structure
|
|
271
|
+
CustomEvent({
|
|
272
|
+
name: "userLevelUp",
|
|
273
|
+
map: {
|
|
274
|
+
userId: "userId",
|
|
275
|
+
newLevel: "newLevel",
|
|
276
|
+
guild: "guild"
|
|
277
|
+
}
|
|
278
|
+
});
|
|
279
|
+
|
|
280
|
+
// Listen for the custom event
|
|
281
|
+
Event({
|
|
282
|
+
name: "userLevelUp",
|
|
283
|
+
id: "levelup-announcer",
|
|
284
|
+
|
|
285
|
+
onExecute({ userId, newLevel, guild }) {
|
|
286
|
+
const channel = guild.systemChannel;
|
|
287
|
+
if (channel) {
|
|
288
|
+
channel.send(`🎉 <@${userId}> reached level ${newLevel}!`);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
});
|
|
292
|
+
});
|
|
293
|
+
|
|
294
|
+
// Trigger the custom event from anywhere
|
|
295
|
+
dbi.emit("userLevelUp", {
|
|
296
|
+
userId: "123456789",
|
|
297
|
+
newLevel: 10,
|
|
298
|
+
guild: someGuild
|
|
299
|
+
});
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
### Custom Event with Direct Trigger
|
|
303
|
+
|
|
304
|
+
```javascript
|
|
305
|
+
dbi.register(({ CustomEvent }) => {
|
|
306
|
+
const levelUpEvent = CustomEvent({
|
|
307
|
+
name: "playerLevelUp",
|
|
308
|
+
map: {
|
|
309
|
+
playerId: "playerId",
|
|
310
|
+
level: "level",
|
|
311
|
+
rewards: "rewards"
|
|
312
|
+
}
|
|
313
|
+
});
|
|
314
|
+
|
|
315
|
+
// Trigger using the returned object
|
|
316
|
+
levelUpEvent.trigger({
|
|
317
|
+
playerId: "12345",
|
|
318
|
+
level: 5,
|
|
319
|
+
rewards: ["gold", "exp_boost"]
|
|
320
|
+
});
|
|
321
|
+
});
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
---
|
|
325
|
+
|
|
326
|
+
## DBI Events
|
|
327
|
+
|
|
328
|
+
DBI provides internal events for interaction and event lifecycle management.
|
|
329
|
+
|
|
330
|
+
### Available DBI Events
|
|
331
|
+
|
|
332
|
+
| Event | Description | Data |
|
|
333
|
+
|-------|-------------|------|
|
|
334
|
+
| `clientsReady` | All clients connected | - |
|
|
335
|
+
| `beforeInteraction` | Before handling interaction | Context object |
|
|
336
|
+
| `afterInteraction` | After handling interaction | Context object |
|
|
337
|
+
| `interactionError` | Error during interaction | Context + error |
|
|
338
|
+
| `interactionRateLimit` | Rate limit triggered | Rate limit info |
|
|
339
|
+
| `beforeEvent` | Before event handler | Event data |
|
|
340
|
+
| `afterEvent` | After event handler | Event data |
|
|
341
|
+
| `eventError` | Error during event | Event data + error |
|
|
342
|
+
| `messageCommandArgumentError` | Invalid message command arg | Error details |
|
|
343
|
+
| `messageCommandDirectMessageUsageError` | DM command not allowed | Error details |
|
|
344
|
+
| `messageCommandDefaultMemberPermissionsError` | Missing permissions | Error details |
|
|
345
|
+
|
|
346
|
+
### Before/After Interaction
|
|
347
|
+
|
|
348
|
+
```javascript
|
|
349
|
+
// Listen for interaction events
|
|
350
|
+
dbi.events.on("beforeInteraction", async (ctx) => {
|
|
351
|
+
console.log(`Interaction: ${ctx.dbiInteraction.name}`);
|
|
352
|
+
console.log(`User: ${ctx.interaction.user.tag}`);
|
|
353
|
+
|
|
354
|
+
// Return true to continue, false to stop
|
|
355
|
+
return true;
|
|
356
|
+
});
|
|
357
|
+
|
|
358
|
+
dbi.events.on("afterInteraction", async (ctx) => {
|
|
359
|
+
console.log(`Completed: ${ctx.dbiInteraction.name}`);
|
|
360
|
+
return true;
|
|
361
|
+
});
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
### Error Handling
|
|
365
|
+
|
|
366
|
+
```javascript
|
|
367
|
+
dbi.events.on("interactionError", async ({ interaction, dbiInteraction, error }) => {
|
|
368
|
+
console.error(`Error in ${dbiInteraction.name}:`, error);
|
|
369
|
+
|
|
370
|
+
// Notify the user
|
|
371
|
+
try {
|
|
372
|
+
if (interaction.replied || interaction.deferred) {
|
|
373
|
+
await interaction.followUp({
|
|
374
|
+
content: "An error occurred. Please try again later.",
|
|
375
|
+
ephemeral: true
|
|
376
|
+
});
|
|
377
|
+
} else {
|
|
378
|
+
await interaction.reply({
|
|
379
|
+
content: "An error occurred. Please try again later.",
|
|
380
|
+
ephemeral: true
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
} catch (e) {
|
|
384
|
+
console.error("Could not send error message:", e);
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
return true;
|
|
388
|
+
});
|
|
389
|
+
|
|
390
|
+
dbi.events.on("eventError", async ({ eventName, dbiEvent, error }) => {
|
|
391
|
+
console.error(`Error in event ${eventName}:`, error);
|
|
392
|
+
return true;
|
|
393
|
+
});
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
### Rate Limiting
|
|
397
|
+
|
|
398
|
+
```javascript
|
|
399
|
+
dbi.events.on("interactionRateLimit", async ({
|
|
400
|
+
interaction,
|
|
401
|
+
dbiInteraction,
|
|
402
|
+
rateLimit,
|
|
403
|
+
remainingTime
|
|
404
|
+
}) => {
|
|
405
|
+
const seconds = Math.ceil(remainingTime / 1000);
|
|
406
|
+
|
|
407
|
+
await interaction.reply({
|
|
408
|
+
content: `⏳ Slow down! Try again in ${seconds} seconds.`,
|
|
409
|
+
ephemeral: true
|
|
410
|
+
});
|
|
411
|
+
|
|
412
|
+
return false; // Don't execute the interaction
|
|
413
|
+
});
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
### Message Command Errors
|
|
417
|
+
|
|
418
|
+
```javascript
|
|
419
|
+
const { ApplicationCommandOptionType } = require("discord.js");
|
|
420
|
+
|
|
421
|
+
dbi.events.on("messageCommandArgumentError", ({
|
|
422
|
+
message,
|
|
423
|
+
interaction,
|
|
424
|
+
dbiInteraction,
|
|
425
|
+
error
|
|
426
|
+
}) => {
|
|
427
|
+
message.reply(
|
|
428
|
+
`❌ Invalid argument \`${error.option.name}\` (Index: ${error.index}).\n` +
|
|
429
|
+
`Error: \`${error.type}\`\n` +
|
|
430
|
+
`Expected: \`${ApplicationCommandOptionType[error.option.type]}\``
|
|
431
|
+
);
|
|
432
|
+
|
|
433
|
+
return false; // Don't execute the command
|
|
434
|
+
});
|
|
435
|
+
|
|
436
|
+
dbi.events.on("messageCommandDirectMessageUsageError", ({ message }) => {
|
|
437
|
+
message.reply("❌ This command cannot be used in DMs.");
|
|
438
|
+
return false;
|
|
439
|
+
});
|
|
440
|
+
|
|
441
|
+
dbi.events.on("messageCommandDefaultMemberPermissionsError", ({
|
|
442
|
+
message,
|
|
443
|
+
permissions
|
|
444
|
+
}) => {
|
|
445
|
+
message.reply(`❌ You need these permissions: ${permissions.join(", ")}`);
|
|
446
|
+
return false;
|
|
447
|
+
});
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
### One-Time Event Handlers
|
|
451
|
+
|
|
452
|
+
```javascript
|
|
453
|
+
// Handler that runs only once
|
|
454
|
+
dbi.events.on("clientsReady", () => {
|
|
455
|
+
console.log("Bot is ready!");
|
|
456
|
+
}, { once: true });
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
### Removing Event Handlers
|
|
460
|
+
|
|
461
|
+
```javascript
|
|
462
|
+
// on() returns a function to remove the handler
|
|
463
|
+
const removeHandler = dbi.events.on("beforeInteraction", (ctx) => {
|
|
464
|
+
console.log("Interaction received");
|
|
465
|
+
return true;
|
|
466
|
+
});
|
|
467
|
+
|
|
468
|
+
// Later, remove the handler
|
|
469
|
+
removeHandler();
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
---
|
|
473
|
+
|
|
474
|
+
## Event Order and Flow
|
|
475
|
+
|
|
476
|
+
### Interaction Flow
|
|
477
|
+
|
|
478
|
+
1. Discord sends interaction
|
|
479
|
+
2. `beforeInteraction` event fires
|
|
480
|
+
3. Rate limit check
|
|
481
|
+
4. `interactionRateLimit` event if limited
|
|
482
|
+
5. Interaction handler executes
|
|
483
|
+
6. `afterInteraction` event fires
|
|
484
|
+
7. If error: `interactionError` event fires
|
|
485
|
+
|
|
486
|
+
### Event Flow
|
|
487
|
+
|
|
488
|
+
1. Discord sends event
|
|
489
|
+
2. `beforeEvent` event fires
|
|
490
|
+
3. Event handler executes
|
|
491
|
+
4. `afterEvent` event fires
|
|
492
|
+
5. If error: `eventError` event fires
|
|
493
|
+
|
|
494
|
+
### Best Practices
|
|
495
|
+
|
|
496
|
+
```javascript
|
|
497
|
+
// ✅ Good - Use specific event IDs
|
|
498
|
+
Event({
|
|
499
|
+
name: "messageCreate",
|
|
500
|
+
id: "spam-filter-v1", // Descriptive ID
|
|
501
|
+
onExecute({ message }) { /* ... */ }
|
|
502
|
+
});
|
|
503
|
+
|
|
504
|
+
// ❌ Bad - Missing ID causes conflicts
|
|
505
|
+
Event({
|
|
506
|
+
name: "messageCreate",
|
|
507
|
+
// No ID - will throw error if strict mode is on
|
|
508
|
+
onExecute({ message }) { /* ... */ }
|
|
509
|
+
});
|
|
510
|
+
|
|
511
|
+
// ✅ Good - Return early from bot messages
|
|
512
|
+
Event({
|
|
513
|
+
name: "messageCreate",
|
|
514
|
+
id: "my-handler",
|
|
515
|
+
onExecute({ message }) {
|
|
516
|
+
if (message.author.bot) return; // Ignore bots
|
|
517
|
+
// Handle user messages
|
|
518
|
+
}
|
|
519
|
+
});
|
|
520
|
+
|
|
521
|
+
// ✅ Good - Use async/await properly
|
|
522
|
+
Event({
|
|
523
|
+
name: "guildMemberAdd",
|
|
524
|
+
id: "welcome",
|
|
525
|
+
async onExecute({ member }) {
|
|
526
|
+
try {
|
|
527
|
+
await member.send("Welcome!");
|
|
528
|
+
} catch (error) {
|
|
529
|
+
console.error("Could not DM member:", error);
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
});
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
---
|
|
536
|
+
|
|
537
|
+
## Guild Locale in Events
|
|
538
|
+
|
|
539
|
+
Access guild locale in events:
|
|
540
|
+
|
|
541
|
+
```javascript
|
|
542
|
+
dbi.register(({ Event }) => {
|
|
543
|
+
Event({
|
|
544
|
+
name: "messageCreate",
|
|
545
|
+
id: "localized-response",
|
|
546
|
+
|
|
547
|
+
onExecute({ message, locale }) {
|
|
548
|
+
if (message.content === "!hello") {
|
|
549
|
+
// Use guild's locale for response
|
|
550
|
+
const greeting = locale?.guild?.data?.greeting?.() || "Hello!";
|
|
551
|
+
message.reply(greeting);
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
});
|
|
555
|
+
});
|
|
556
|
+
```
|
|
557
|
+
|
|
558
|
+
---
|
|
559
|
+
|
|
560
|
+
## Next Steps
|
|
561
|
+
|
|
562
|
+
- [Localization](./LOCALIZATION.md) - Multi-language support
|
|
563
|
+
- [Advanced Features](./ADVANCED_FEATURES.md) - Message commands, multi-client
|
|
564
|
+
- [API Reference](./API_REFERENCE.md) - Complete API documentation
|