about summary refs log tree commit diff
path: root/pkg/discord/events
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/discord/events')
-rw-r--r--pkg/discord/events/event_handler.go29
-rw-r--r--pkg/discord/events/events.go14
2 files changed, 43 insertions, 0 deletions
diff --git a/pkg/discord/events/event_handler.go b/pkg/discord/events/event_handler.go
new file mode 100644
index 0000000..5a1a118
--- /dev/null
+++ b/pkg/discord/events/event_handler.go
@@ -0,0 +1,29 @@
+package events
+
+type EventHandler interface {
+	Add(event Event, handler func(payload any))
+
+	Fire(event Event, payload any)
+}
+
+var _ EventHandler = &EventHandlerImpl{}
+
+type EventHandlerImpl struct {
+	handlers map[Event]func(payload any)
+}
+
+func NewEventHandler() *EventHandlerImpl {
+	return &EventHandlerImpl{
+		handlers: make(map[Event]func(payload any)),
+	}
+}
+
+func (h *EventHandlerImpl) Add(event Event, handler func(payload any)) {
+	h.handlers[event] = handler
+}
+
+func (h *EventHandlerImpl) Fire(event Event, payload any) {
+	if handler, ok := h.handlers[event]; ok {
+		handler(payload)
+	}
+}
diff --git a/pkg/discord/events/events.go b/pkg/discord/events/events.go
new file mode 100644
index 0000000..b1730f0
--- /dev/null
+++ b/pkg/discord/events/events.go
@@ -0,0 +1,14 @@
+package events
+
+import "jinx/pkg/discord/entities"
+
+type Event uint8
+
+const (
+	READY Event = iota
+	MESSAGE
+)
+
+type Ready struct{}
+
+type Message entities.Message