diff options
| author | Mel <einebeere@gmail.com> | 2022-04-04 14:10:05 +0200 |
|---|---|---|
| committer | Mel <einebeere@gmail.com> | 2022-04-04 14:10:05 +0200 |
| commit | 8e8bff65922378c1e7eed752add93972e769978d (patch) | |
| tree | d28d3a60ce4e9997309bad72d7668647bda41292 /pkg/discord/event_handler.go | |
| parent | 165ed818775c915e4bfd2599bdb8ca8e2975bb83 (diff) | |
| download | jinx-8e8bff65922378c1e7eed752add93972e769978d.tar.zst jinx-8e8bff65922378c1e7eed752add93972e769978d.zip | |
Simple event handling
Diffstat (limited to 'pkg/discord/event_handler.go')
| -rw-r--r-- | pkg/discord/event_handler.go | 36 |
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) + } +} |
