kythia-core 0.9.5-beta → 0.10.1-beta
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/.husky/pre-commit +4 -0
- package/README.md +13 -4
- package/biome.json +40 -0
- package/bun.lock +445 -0
- package/changelog.md +7 -0
- package/index.js +1 -3
- package/package.json +57 -44
- package/src/Kythia.js +530 -449
- package/src/KythiaClient.js +90 -49
- package/src/database/KythiaMigrator.js +116 -0
- package/src/database/KythiaModel.js +1519 -1050
- package/src/database/KythiaSequelize.js +104 -95
- package/src/database/KythiaStorage.js +117 -0
- package/src/database/ModelLoader.js +79 -0
- package/src/managers/AddonManager.js +1190 -946
- package/src/managers/EventManager.js +80 -75
- package/src/managers/InteractionManager.js +794 -589
- package/src/managers/ShutdownManager.js +200 -179
- package/src/structures/BaseCommand.js +40 -36
- package/src/utils/color.js +157 -153
- package/src/utils/formatter.js +81 -81
- package/src/utils/index.js +2 -2
- package/src/database/KythiaORM.js +0 -520
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* @file src/managers/EventManager.js
|
|
5
5
|
* @copyright © 2025 kenndeclouv
|
|
6
6
|
* @assistant chaa & graa
|
|
7
|
-
* @version 0.
|
|
7
|
+
* @version 0.10.0-beta
|
|
8
8
|
*
|
|
9
9
|
* @description
|
|
10
10
|
* Handles all Discord event listeners except InteractionCreate.
|
|
@@ -12,88 +12,93 @@
|
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
14
|
class EventManager {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
15
|
+
/**
|
|
16
|
+
* 🏗️ EventManager Constructor
|
|
17
|
+
* @param {Object} client - Discord client instance
|
|
18
|
+
* @param {Object} container - Dependency container
|
|
19
|
+
* @param {Map} eventHandlers - Event handlers map from AddonManager
|
|
20
|
+
*/
|
|
21
|
+
constructor({ client, container, eventHandlers }) {
|
|
22
|
+
this.client = client;
|
|
23
|
+
this.container = container;
|
|
24
|
+
this.eventHandlers = eventHandlers;
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
this.logger = this.container.logger;
|
|
27
|
+
}
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
29
|
+
/**
|
|
30
|
+
* 🚦 Initialize Master Event Handlers
|
|
31
|
+
* Creates a single listener for each event type that then executes all
|
|
32
|
+
* registered addon handlers in their prioritized order.
|
|
33
|
+
*/
|
|
34
|
+
initialize() {
|
|
35
|
+
for (const [eventName, handlers] of this.eventHandlers.entries()) {
|
|
36
|
+
this.client.on(eventName, async (...args) => {
|
|
37
|
+
for (const handler of handlers) {
|
|
38
|
+
try {
|
|
39
|
+
const stopPropagation = await handler(this, ...args);
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
41
|
+
if (stopPropagation === true) {
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
} catch (error) {
|
|
45
|
+
this.logger.error(
|
|
46
|
+
`Error executing event handler for [${eventName}]:`,
|
|
47
|
+
error,
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}
|
|
50
53
|
|
|
51
|
-
|
|
52
|
-
|
|
54
|
+
this.logger.info(
|
|
55
|
+
`✅ EventManager initialized with ${this.eventHandlers.size} event types`,
|
|
56
|
+
);
|
|
57
|
+
}
|
|
53
58
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
59
|
+
/**
|
|
60
|
+
* Add a new event handler
|
|
61
|
+
* @param {string} eventName - Name of the event
|
|
62
|
+
* @param {Function} handler - Handler function
|
|
63
|
+
*/
|
|
64
|
+
addEventHandler(eventName, handler) {
|
|
65
|
+
if (!this.eventHandlers.has(eventName)) {
|
|
66
|
+
this.eventHandlers.set(eventName, []);
|
|
67
|
+
}
|
|
68
|
+
this.eventHandlers.get(eventName).push(handler);
|
|
69
|
+
}
|
|
65
70
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
71
|
+
/**
|
|
72
|
+
* Remove an event handler
|
|
73
|
+
* @param {string} eventName - Name of the event
|
|
74
|
+
* @param {Function} handler - Handler function to remove
|
|
75
|
+
*/
|
|
76
|
+
removeEventHandler(eventName, handler) {
|
|
77
|
+
if (this.eventHandlers.has(eventName)) {
|
|
78
|
+
const handlers = this.eventHandlers.get(eventName);
|
|
79
|
+
const index = handlers.indexOf(handler);
|
|
80
|
+
if (index > -1) {
|
|
81
|
+
handlers.splice(index, 1);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
80
85
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
86
|
+
/**
|
|
87
|
+
* Get all handlers for a specific event
|
|
88
|
+
* @param {string} eventName - Name of the event
|
|
89
|
+
* @returns {Array} Array of handlers
|
|
90
|
+
*/
|
|
91
|
+
getEventHandlers(eventName) {
|
|
92
|
+
return this.eventHandlers.get(eventName) || [];
|
|
93
|
+
}
|
|
89
94
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
95
|
+
/**
|
|
96
|
+
* Get all registered event types
|
|
97
|
+
* @returns {Array} Array of event names
|
|
98
|
+
*/
|
|
99
|
+
getEventTypes() {
|
|
100
|
+
return Array.from(this.eventHandlers.keys());
|
|
101
|
+
}
|
|
97
102
|
}
|
|
98
103
|
|
|
99
104
|
module.exports = EventManager;
|