about summary refs log tree commit diff
path: root/pkg/discord/event_handler.go
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2022-04-04 14:10:05 +0200
committerMel <einebeere@gmail.com>2022-04-04 14:10:05 +0200
commit8e8bff65922378c1e7eed752add93972e769978d (patch)
treed28d3a60ce4e9997309bad72d7668647bda41292 /pkg/discord/event_handler.go
parent165ed818775c915e4bfd2599bdb8ca8e2975bb83 (diff)
downloadjinx-8e8bff65922378c1e7eed752add93972e769978d.tar.zst
jinx-8e8bff65922378c1e7eed752add93972e769978d.zip
Simple event handling
Diffstat (limited to 'pkg/discord/event_handler.go')
-rw-r--r--pkg/discord/event_handler.go36
1 files changed, 36 insertions, 0 deletions
diff --git a/pkg/discord/event_handler.go b/pkg/discord/event_handler.go
new file mode 100644
index 0000000..6f3ded5
--- /dev/null
+++ b/pkg/discord/event_handler.go
@@ -0,0 +1,36 @@
+package discord
+
+type DiscordEvent uint8
+
+const (
+	DISCORD_EVENT_READY DiscordEvent = iota
+	DISCORD_EVENT_MESSAGE
+)
+
+type EventHandler interface {
+	Add(event DiscordEvent, handler func(payload any))
+
+	Fire(event DiscordEvent, payload any)
+}
+
+var _ EventHandler = &EventHandlerImpl{}
+
+type EventHandlerImpl struct {
+	handlers map[DiscordEvent]func(payload any)
+}
+
+func NewEventHandler() *EventHandlerImpl {
+	return &EventHandlerImpl{
+		handlers: make(map[DiscordEvent]func(payload any)),
+	}
+}
+
+func (h *EventHandlerImpl) Add(event DiscordEvent, handler func(payload any)) {
+	h.handlers[event] = handler
+}
+
+func (h *EventHandlerImpl) Fire(event DiscordEvent, payload any) {
+	if handler, ok := h.handlers[event]; ok {
+		handler(payload)
+	}
+}