From 0219fb9901098dd59ee9a863e4bb92791b230c1d Mon Sep 17 00:00:00 2001 From: MistahJ Date: Fri, 25 Oct 2019 01:31:19 -0700 Subject: [PATCH 1/7] Support for Batch Request Guild Members This is supported by the Discord API and will save requests. --- wsapi.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/wsapi.go b/wsapi.go index eccbb9f..f662c2e 100644 --- a/wsapi.go +++ b/wsapi.go @@ -399,7 +399,7 @@ func (s *Session) UpdateStatusComplex(usd UpdateStatusData) (err error) { } type requestGuildMembersData struct { - GuildID string `json:"guild_id"` + GuildID []string `json:"guild_id"` Query string `json:"query"` Limit int `json:"limit"` } @@ -411,10 +411,10 @@ 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 : 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) RequestGuildMembers(guildID, query string, limit int) (err error) { +func (s *Session) RequestGuildMembers(guildID []string, query string, limit int) (err error) { s.log(LogInformational, "called") s.RLock() From 7057551cd01b25747a50b6e4e9f400c68fc8f769 Mon Sep 17 00:00:00 2001 From: MistahJ Date: Fri, 25 Oct 2019 01:53:26 -0700 Subject: [PATCH 2/7] go fmt file --- wsapi.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wsapi.go b/wsapi.go index f662c2e..7b7f4ba 100644 --- a/wsapi.go +++ b/wsapi.go @@ -400,8 +400,8 @@ func (s *Session) UpdateStatusComplex(usd UpdateStatusData) (err error) { type requestGuildMembersData struct { GuildID []string `json:"guild_id"` - Query string `json:"query"` - Limit int `json:"limit"` + Query string `json:"query"` + Limit int `json:"limit"` } type requestGuildMembersOp struct { From b317e27d39c21a8ef9b434b00cde750fe9e0b985 Mon Sep 17 00:00:00 2001 From: MistahJ Date: Sat, 26 Oct 2019 09:53:31 -0700 Subject: [PATCH 3/7] Improvements --- wsapi.go | 44 ++++++++++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/wsapi.go b/wsapi.go index 7b7f4ba..0f840d2 100644 --- a/wsapi.go +++ b/wsapi.go @@ -399,9 +399,10 @@ func (s *Session) UpdateStatusComplex(usd UpdateStatusData) (err error) { } type requestGuildMembersData struct { - GuildID []string `json:"guild_id"` - Query string `json:"query"` - Limit int `json:"limit"` + GuildID string `json:"guild_id"` + GuildIDs []string `json:"guild_id"` + Query string `json:"query"` + Limit int `json:"limit"` } type requestGuildMembersOp struct { @@ -411,10 +412,35 @@ type requestGuildMembersOp struct { // RequestGuildMembers requests guild members from the gateway // The gateway responds with GuildMembersChunk events +// 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 string, query string, limit int) (err error) { + data := requestGuildMembersData{ + GuildID: guildID, + Query: query, + Limit: limit, + } + err = s.requestGuildMember(&data) + return err +} + +// 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) RequestGuildMembers(guildID []string, query string, limit int) (err error) { +func (s *Session) RequestGuildMembersBatch(guildIDs []string, query string, limit int) (err error) { + data := requestGuildMembersData{ + GuildIDs: guildIDs, + Query: query, + Limit: limit, + } + err = s.requestGuildMember(&data) + return err +} + +func (s *Session) requestGuildMember(data *requestGuildMembersData) (err error) { s.log(LogInformational, "called") s.RLock() @@ -423,17 +449,11 @@ func (s *Session) RequestGuildMembers(guildID []string, query string, limit int) return ErrWSNotFound } - data := requestGuildMembersData{ - GuildID: guildID, - Query: query, - Limit: limit, - } - s.wsMutex.Lock() - err = s.wsConn.WriteJSON(requestGuildMembersOp{8, data}) + err = s.wsConn.WriteJSON(requestGuildMembersOp{8, *data}) s.wsMutex.Unlock() - return + return err } // onEvent is the "event handler" for all messages received on the From f4d9341a31e6628457df579fe9f8e0755bfaeaa0 Mon Sep 17 00:00:00 2001 From: MistahJ Date: Sat, 26 Oct 2019 09:53:31 -0700 Subject: [PATCH 4/7] Improvements --- wsapi.go | 41 ++++++++++++++++++++++++++++++----------- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/wsapi.go b/wsapi.go index 7b7f4ba..bfeab25 100644 --- a/wsapi.go +++ b/wsapi.go @@ -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 { @@ -411,10 +411,35 @@ type requestGuildMembersOp struct { // RequestGuildMembers requests guild members from the gateway // The gateway responds with GuildMembersChunk events +// 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 string, query string, limit int) (err error) { + data := requestGuildMembersData{ + GuildIDs: []string{guildID}, + Query: query, + Limit: limit, + } + err = s.requestGuildMember(data) + return err +} + +// 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) RequestGuildMembers(guildID []string, query string, limit int) (err error) { +func (s *Session) RequestGuildMembersBatch(guildIDs []string, query string, limit int) (err error) { + data := requestGuildMembersData{ + GuildIDs: guildIDs, + Query: query, + Limit: limit, + } + err = s.requestGuildMember(data) + return err +} + +func (s *Session) requestGuildMember(data requestGuildMembersData) (err error) { s.log(LogInformational, "called") s.RLock() @@ -423,17 +448,11 @@ func (s *Session) RequestGuildMembers(guildID []string, query string, limit int) return ErrWSNotFound } - data := requestGuildMembersData{ - GuildID: guildID, - Query: query, - Limit: limit, - } - s.wsMutex.Lock() err = s.wsConn.WriteJSON(requestGuildMembersOp{8, data}) s.wsMutex.Unlock() - return + return err } // onEvent is the "event handler" for all messages received on the From cc90f690b377e75a2633771c4bbe80c3f41890d5 Mon Sep 17 00:00:00 2001 From: MistahJ Date: Sun, 27 Oct 2019 20:41:12 -0700 Subject: [PATCH 5/7] go fmt --- wsapi.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wsapi.go b/wsapi.go index bfeab25..3650308 100644 --- a/wsapi.go +++ b/wsapi.go @@ -417,8 +417,8 @@ type requestGuildMembersOp struct { func (s *Session) RequestGuildMembers(guildID string, query string, limit int) (err error) { data := requestGuildMembersData{ GuildIDs: []string{guildID}, - Query: query, - Limit: limit, + Query: query, + Limit: limit, } err = s.requestGuildMember(data) return err From c3e4a2dea8af4d59bc78f912848b3a160c219f02 Mon Sep 17 00:00:00 2001 From: MistahJ Date: Fri, 27 Dec 2019 17:44:20 -0700 Subject: [PATCH 6/7] fix typo --- wsapi.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/wsapi.go b/wsapi.go index 3650308..5656f97 100644 --- a/wsapi.go +++ b/wsapi.go @@ -420,7 +420,7 @@ func (s *Session) RequestGuildMembers(guildID string, query string, limit int) ( Query: query, Limit: limit, } - err = s.requestGuildMember(data) + err = s.requestGuildMembers(data) return err } @@ -435,11 +435,11 @@ func (s *Session) RequestGuildMembersBatch(guildIDs []string, query string, limi Query: query, Limit: limit, } - err = s.requestGuildMember(data) + err = s.requestGuildMembers(data) return err } -func (s *Session) requestGuildMember(data requestGuildMembersData) (err error) { +func (s *Session) requestGuildMembers(data requestGuildMembersData) (err error) { s.log(LogInformational, "called") s.RLock() From 49f3160ac481c2c8276b728a9cd5e64a2b07bb80 Mon Sep 17 00:00:00 2001 From: MistahJ Date: Fri, 27 Dec 2019 17:50:21 -0700 Subject: [PATCH 7/7] clean up returns --- wsapi.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/wsapi.go b/wsapi.go index 5656f97..c1fb91a 100644 --- a/wsapi.go +++ b/wsapi.go @@ -421,7 +421,7 @@ func (s *Session) RequestGuildMembers(guildID string, query string, limit int) ( Limit: limit, } err = s.requestGuildMembers(data) - return err + return } // RequestGuildMembersBatch requests guild members from the gateway @@ -436,7 +436,7 @@ func (s *Session) RequestGuildMembersBatch(guildIDs []string, query string, limi Limit: limit, } err = s.requestGuildMembers(data) - return err + return } func (s *Session) requestGuildMembers(data requestGuildMembersData) (err error) { @@ -452,7 +452,7 @@ func (s *Session) requestGuildMembers(data requestGuildMembersData) (err error) err = s.wsConn.WriteJSON(requestGuildMembersOp{8, data}) s.wsMutex.Unlock() - return err + return } // onEvent is the "event handler" for all messages received on the