Skip to content

Commit

Permalink
Merge pull request #709 from mistahj67/BatchRequestGuildMembers
Browse files Browse the repository at this point in the history
Support for Batch Request Guild Members
  • Loading branch information
CarsonHoffman authored Dec 28, 2019
2 parents 525ac13 + 49f3160 commit 431f16e
Showing 1 changed file with 30 additions and 11 deletions.
41 changes: 30 additions & 11 deletions wsapi.go
Original file line number Diff line number Diff line change
Expand Up @@ -399,9 +399,9 @@ func (s *Session) UpdateStatusComplex(usd UpdateStatusData) (err error) {
}

type requestGuildMembersData struct {
GuildID string `json:"guild_id"`
Query string `json:"query"`
Limit int `json:"limit"`
GuildIDs []string `json:"guild_id"`
Query string `json:"query"`
Limit int `json:"limit"`
}

type requestGuildMembersOp struct {
Expand All @@ -411,10 +411,35 @@ type requestGuildMembersOp struct {

// RequestGuildMembers requests guild members from the gateway
// 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
// 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.RLock()
Expand All @@ -423,12 +448,6 @@ func (s *Session) RequestGuildMembers(guildID, query string, limit int) (err err
return ErrWSNotFound
}

data := requestGuildMembersData{
GuildID: guildID,
Query: query,
Limit: limit,
}

s.wsMutex.Lock()
err = s.wsConn.WriteJSON(requestGuildMembersOp{8, data})
s.wsMutex.Unlock()
Expand Down

0 comments on commit 431f16e

Please sign in to comment.