usercache: return user ids that were updated
This commit is contained in:
@@ -19,11 +19,14 @@ package connector
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
|
"maps"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"slices"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/bwmarrin/discordgo"
|
"github.com/bwmarrin/discordgo"
|
||||||
"github.com/rs/zerolog"
|
"github.com/rs/zerolog"
|
||||||
|
|
||||||
"go.mau.fi/mautrix-discord/pkg/discordid"
|
"go.mau.fi/mautrix-discord/pkg/discordid"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -56,21 +59,27 @@ func (uc *UserCache) HandleReady(ready *discordgo.Ready) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (uc *UserCache) HandleMessage(msg *discordgo.Message) {
|
// HandleMessage updates the user cache with the users involved in a single
|
||||||
|
// message (author, mentioned, mentioned author, etc.)
|
||||||
|
//
|
||||||
|
// The updated user IDs are returned.
|
||||||
|
func (uc *UserCache) HandleMessage(msg *discordgo.Message) []string {
|
||||||
if msg == nil {
|
if msg == nil {
|
||||||
return
|
return []string{}
|
||||||
}
|
}
|
||||||
|
|
||||||
// For now just forward to HandleMessages until a need for a specialized
|
// For now just forward to HandleMessages until a need for a specialized
|
||||||
// path makes itself known.
|
// path makes itself known.
|
||||||
uc.HandleMessages([]*discordgo.Message{msg})
|
return uc.HandleMessages([]*discordgo.Message{msg})
|
||||||
}
|
}
|
||||||
|
|
||||||
// HandleMessages updates the user cache with message authors from a slice of
|
// HandleMessages updates the user cache with the total set of users involved
|
||||||
// discordgo.Message.
|
// with multiple messages (authors, mentioned users, mentioned authors, etc.)
|
||||||
func (uc *UserCache) HandleMessages(msgs []*discordgo.Message) {
|
//
|
||||||
|
// The updated user IDs are returned.
|
||||||
|
func (uc *UserCache) HandleMessages(msgs []*discordgo.Message) []string {
|
||||||
if len(msgs) == 0 {
|
if len(msgs) == 0 {
|
||||||
return
|
return []string{}
|
||||||
}
|
}
|
||||||
|
|
||||||
collectedUsers := map[string]*discordgo.User{}
|
collectedUsers := map[string]*discordgo.User{}
|
||||||
@@ -97,6 +106,8 @@ func (uc *UserCache) HandleMessages(msgs []*discordgo.Message) {
|
|||||||
for _, user := range collectedUsers {
|
for _, user := range collectedUsers {
|
||||||
uc.cache[user.ID] = user
|
uc.cache[user.ID] = user
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return slices.Collect(maps.Keys(collectedUsers))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (uc *UserCache) HandleUserUpdate(update *discordgo.UserUpdate) {
|
func (uc *UserCache) HandleUserUpdate(update *discordgo.UserUpdate) {
|
||||||
|
|||||||
Reference in New Issue
Block a user