From fd59b91de16e8c919144665df10ba0c4523e6fd6 Mon Sep 17 00:00:00 2001 From: diamondburned Date: Fri, 1 Apr 2022 04:40:15 -0700 Subject: [PATCH] state: Handle Thread events --- state/state_events.go | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/state/state_events.go b/state/state_events.go index 5b3d090..3d30093 100644 --- a/state/state_events.go +++ b/state/state_events.go @@ -214,6 +214,30 @@ func (s *State) onEvent(iface interface{}) { case *gateway.ChannelPinsUpdateEvent: // not tracked. + case *gateway.ThreadListSyncEvent: + for i := range ev.Threads { + if err := s.Cabinet.ChannelSet(&ev.Threads[i], true); err != nil { + s.stateErr(err, "failed to set a thread in state sync") + } + } + + case *gateway.ThreadCreateEvent: + if err := s.Cabinet.ChannelSet(&ev.Channel, false); err != nil { + s.stateErr(err, "failed to create a thread in state") + } + + case *gateway.ThreadUpdateEvent: + if err := s.Cabinet.ChannelSet(&ev.Channel, true); err != nil { + s.stateErr(err, "failed to update a thread in state") + } + + case *gateway.ThreadDeleteEvent: + if ch, err := s.Cabinet.Channel(ev.ID); err == nil { + if err := s.Cabinet.ChannelRemove(ch); err != nil { + s.stateErr(err, "failed to delete a thread in state") + } + } + case *gateway.MessageCreateEvent: if err := s.Cabinet.MessageSet(&ev.Message, false); err != nil { s.stateErr(err, "failed to add a message in state") @@ -456,6 +480,15 @@ func storeGuildCreate(cab *store.Cabinet, guild *gateway.GuildCreateEvent) []err } } + // Handle guild roles + for _, r := range guild.Roles { + r := r + + if err := cab.RoleSet(guild.ID, &r, false); err != nil { + errs(err, "failed to set role in Ready") + } + } + return *stack }