connector: implement user cache
* Fixes the totally broken UserInfo resolution in guilds. * Adds support for USER_UPDATE from the gateway. Design considerations behind the user cache: * Explicitly handle deleted user IDs by short circuiting the lookup logic and returning a singleton. * The cache map is protected during HTTP requests to the Discord API. * The nonexistence of a user is cached. This is to prevent excessive requests (a user can't suddenly begin existing at a given ID). The user cache is upserted on READY, incoming messages, backfill, etc.
This commit is contained in:
@@ -63,6 +63,7 @@ func (dc *DiscordClient) FetchMessages(ctx context.Context, fetchParams bridgev2
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
dc.userCache.HandleMessages(msgs)
|
||||
|
||||
converted := make([]*bridgev2.BackfillMessage, 0, len(msgs))
|
||||
for _, msg := range msgs {
|
||||
|
||||
Reference in New Issue
Block a user