From 8e8bff65922378c1e7eed752add93972e769978d Mon Sep 17 00:00:00 2001 From: Mel Date: Mon, 4 Apr 2022 14:10:05 +0200 Subject: Simple event handling --- pkg/discord/event_handler.go | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 pkg/discord/event_handler.go (limited to 'pkg/discord/event_handler.go') 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) + } +} -- cgit 1.4.1