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) } }