events.go
Rama master · réplica de lectura del repositorio original.
package main
import (
"sync"
"github.com/Luzifer/go_helpers/fieldcollection"
log "github.com/sirupsen/logrus"
"github.com/Luzifer/twitch-bot/v3/pkg/event"
"github.com/Luzifer/twitch-bot/v3/plugins"
)
var (
registeredEventHandlers []plugins.EventHandlerFunc
registeredEventHandlersLock sync.Mutex
)
var (
eventTypeCustom = new("custom")
eventTypeKoFiDonation = new("kofi_donation")
knownEvents = []*string{
event.AdBreakBegin{}.Event(),
event.Announcement{}.Event(),
event.Ban{}.Event(),
event.Bits{}.Event(),
eventTypeCustom,
event.ChannelPointRedeem{}.Event(),
event.ClearChat{}.Event(),
event.ClearMessage{}.Event(),
event.Follow{}.Event(),
event.GiftPaidUpgrade{}.Event(),
event.HypetrainBegin{}.Event(),
event.HypetrainEnd{}.Event(),
event.HypetrainProgress{}.Event(),
event.Join{}.Event(),
eventTypeKoFiDonation,
event.ModeratorAdd{}.Event(),
event.ModeratorRemove{}.Event(),
event.OutboundRaid{}.Event(),
event.Part{}.Event(),
event.Permit{}.Event(),
event.PollBegin{}.Event(),
event.PollEnd{}.Event(),
event.PollProgress{}.Event(),
event.PrimePaidUpgrade{}.Event(),
event.Raid{}.Event(),
event.Resub{}.Event(),
event.ShoutoutCreated{}.Event(),
event.ShoutoutReceived{}.Event(),
event.Sub{}.Event(),
event.SubGift{}.Event(),
event.SubMysteryGift{}.Event(),
event.SuspiciousUserMessage{}.Event(),
event.SuspiciousUserUpdate{}.Event(),
event.Timeout{}.Event(),
event.VIPAdd{}.Event(),
event.VIPRemove{}.Event(),
event.WatchStreak{}.Event(),
event.Whisper{}.Event(),
event.CategoryUpdate{}.Event(),
event.StreamOffline{}.Event(),
event.StreamOnline{}.Event(),
event.TitleUpdate{}.Event(),
}
)
func notifyEventHandlers(evt string, eventData *fieldcollection.FieldCollection) {
registeredEventHandlersLock.Lock()
defer registeredEventHandlersLock.Unlock()
for _, fn := range registeredEventHandlers {
if err := fn(evt, eventData); err != nil {
log.WithError(err).Error("EventHandler caused error")
}
}
}
func registerEventHandlers(eh plugins.EventHandlerFunc) error {
registeredEventHandlersLock.Lock()
defer registeredEventHandlersLock.Unlock()
registeredEventHandlers = append(registeredEventHandlers, eh)
return nil
}