Merge pull request #709 from mistahj67/BatchRequestGuildMembers

Support for Batch Request Guild Members
This commit is contained in:
Carson Hoffman 2019-12-27 20:08:41 -05:00 committed by GitHub
commit 431f16ea05
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -399,9 +399,9 @@ func (s *Session) UpdateStatusComplex(usd UpdateStatusData) (err error) {
} }
type requestGuildMembersData struct { type requestGuildMembersData struct {
GuildID string `json:"guild_id"` GuildIDs []string `json:"guild_id"`
Query string `json:"query"` Query string `json:"query"`
Limit int `json:"limit"` Limit int `json:"limit"`
} }
type requestGuildMembersOp struct { type requestGuildMembersOp struct {
@ -411,10 +411,35 @@ type requestGuildMembersOp struct {
// RequestGuildMembers requests guild members from the gateway // RequestGuildMembers requests guild members from the gateway
// The gateway responds with GuildMembersChunk events // The gateway responds with GuildMembersChunk events
// guildID : The ID of the guild to request members of // guildID : Single Guild ID to request members of
// query : String that username starts with, leave empty to return all members // query : String that username starts with, leave empty to return all members
// limit : Max number of items to return, or 0 to request all members matched // limit : Max number of items to return, or 0 to request all members matched
func (s *Session) RequestGuildMembers(guildID, query string, limit int) (err error) { func (s *Session) RequestGuildMembers(guildID string, query string, limit int) (err error) {
data := requestGuildMembersData{
GuildIDs: []string{guildID},
Query: query,
Limit: limit,
}
err = s.requestGuildMembers(data)
return
}
// RequestGuildMembersBatch requests guild members from the gateway
// The gateway responds with GuildMembersChunk events
// guildID : Slice of guild IDs to request members of
// query : String that username starts with, leave empty to return all members
// limit : Max number of items to return, or 0 to request all members matched
func (s *Session) RequestGuildMembersBatch(guildIDs []string, query string, limit int) (err error) {
data := requestGuildMembersData{
GuildIDs: guildIDs,
Query: query,
Limit: limit,
}
err = s.requestGuildMembers(data)
return
}
func (s *Session) requestGuildMembers(data requestGuildMembersData) (err error) {
s.log(LogInformational, "called") s.log(LogInformational, "called")
s.RLock() s.RLock()
@ -423,12 +448,6 @@ func (s *Session) RequestGuildMembers(guildID, query string, limit int) (err err
return ErrWSNotFound return ErrWSNotFound
} }
data := requestGuildMembersData{
GuildID: guildID,
Query: query,
Limit: limit,
}
s.wsMutex.Lock() s.wsMutex.Lock()
err = s.wsConn.WriteJSON(requestGuildMembersOp{8, data}) err = s.wsConn.WriteJSON(requestGuildMembersOp{8, data})
s.wsMutex.Unlock() s.wsMutex.Unlock()