diff options
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) + } +} |
