diff options
| author | Mel <einebeere@gmail.com> | 2022-04-08 12:54:09 +0200 |
|---|---|---|
| committer | Mel <einebeere@gmail.com> | 2022-04-08 12:54:09 +0200 |
| commit | 24f175df385466e04ef21d153713d2ecf3a9733b (patch) | |
| tree | 1c5c6253a22804697462d3fb9e9f3189af15c286 /pkg/discord/events/event_handler.go | |
| parent | 18389cf659c40cebc4572924929abfcec3c6b875 (diff) | |
| download | jinx-24f175df385466e04ef21d153713d2ecf3a9733b.tar.zst jinx-24f175df385466e04ef21d153713d2ecf3a9733b.zip | |
Subdivide discord into packages
Diffstat (limited to 'pkg/discord/events/event_handler.go')
| -rw-r--r-- | pkg/discord/events/event_handler.go | 29 |
1 files changed, 29 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) + } +} |
