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