From 8389c6c4cd95759376bb53823ae43b796c0e6b9f Mon Sep 17 00:00:00 2001 From: Pancake-e <102919931+Pancake-e@users.noreply.github.com> Date: Mon, 4 Apr 2022 01:31:42 +0800 Subject: [PATCH 1/3] Added Guild Members Search Function --- endpoints.go | 1 + restapi.go | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/endpoints.go b/endpoints.go index d39a175b6..c0d5b7241 100644 --- a/endpoints.go +++ b/endpoints.go @@ -72,6 +72,7 @@ var ( EndpointGuildPreview = func(gID string) string { return EndpointGuilds + gID + "/preview" } EndpointGuildChannels = func(gID string) string { return EndpointGuilds + gID + "/channels" } EndpointGuildMembers = func(gID string) string { return EndpointGuilds + gID + "/members" } + EndpointGuildMembersSearch = func(gID string) string { return EndpointGuildMembers(gID) + "/search" } EndpointGuildMember = func(gID, uID string) string { return EndpointGuilds + gID + "/members/" + uID } EndpointGuildMemberRole = func(gID, uID, rID string) string { return EndpointGuilds + gID + "/members/" + uID + "/roles/" + rID } EndpointGuildBans = func(gID string) string { return EndpointGuilds + gID + "/bans" } diff --git a/restapi.go b/restapi.go index 0230fd6ec..e3fa5c43d 100644 --- a/restapi.go +++ b/restapi.go @@ -2933,3 +2933,29 @@ func (s *Session) GuildScheduledEventUsers(guildID, eventID string, limit int, w err = unmarshal(body, &st) return } + +// SearchGuildMembers returns a list of guild member objects whose username or nickname starts with a provided string +// guildID : The ID of a Guild +// query : Query string to match username(s) and nickname(s) against +// limit : Max number of members to return (1-1000) +func (s *Session) SearchGuildMembers(guildID, query string, limit int) (st []*Member, err error) { + uri := EndpointGuildMembersSearch(guildID) + + queryParams := url.Values{} + queryParams.Set("query", query) + if limit > 1 { + queryParams.Set("limit", strconv.Itoa(limit)) + } + + if len(queryParams) > 0 { + uri += "?" + queryParams.Encode() + } + + body, err := s.RequestWithBucketID("GET", uri, nil, EndpointGuildMembersSearch(guildID)) + if err != nil { + return + } + + err = unmarshal(body, &st) + return +} From 5d361f0db99ff6a8b711cadfd582bd9a3023cca9 Mon Sep 17 00:00:00 2001 From: Pancake-e <102919931+Pancake-e@users.noreply.github.com> Date: Mon, 4 Apr 2022 02:48:49 +0800 Subject: [PATCH 2/3] Updated method name to be consistent with other endpoints --- restapi.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/restapi.go b/restapi.go index e3fa5c43d..adbea468e 100644 --- a/restapi.go +++ b/restapi.go @@ -2934,11 +2934,11 @@ func (s *Session) GuildScheduledEventUsers(guildID, eventID string, limit int, w return } -// SearchGuildMembers returns a list of guild member objects whose username or nickname starts with a provided string +// GuildMembersSearch returns a list of guild member objects whose username or nickname starts with a provided string // guildID : The ID of a Guild // query : Query string to match username(s) and nickname(s) against // limit : Max number of members to return (1-1000) -func (s *Session) SearchGuildMembers(guildID, query string, limit int) (st []*Member, err error) { +func (s *Session) GuildMembersSearch(guildID, query string, limit int) (st []*Member, err error) { uri := EndpointGuildMembersSearch(guildID) queryParams := url.Values{} From a396ff49579102eb0ae6aef6453422db72600f7d Mon Sep 17 00:00:00 2001 From: Pancake-e <102919931+Pancake-e@users.noreply.github.com> Date: Mon, 4 Apr 2022 13:55:12 +0800 Subject: [PATCH 3/3] Refactored and moved GuildMembersSearch method for consistency --- restapi.go | 49 +++++++++++++++++++++++-------------------------- 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/restapi.go b/restapi.go index adbea468e..90ebd0c34 100644 --- a/restapi.go +++ b/restapi.go @@ -696,6 +696,29 @@ func (s *Session) GuildMembers(guildID string, after string, limit int) (st []*M return } +// GuildMembersSearch returns a list of guild member objects whose username or nickname starts with a provided string +// guildID : The ID of a Guild +// query : Query string to match username(s) and nickname(s) against +// limit : Max number of members to return (default 1, min 1, max 1000) +func (s *Session) GuildMembersSearch(guildID, query string, limit int) (st []*Member, err error) { + + uri := EndpointGuildMembersSearch(guildID) + + queryParams := url.Values{} + queryParams.Set("query", query) + if limit > 1 { + queryParams.Set("limit", strconv.Itoa(limit)) + } + + body, err := s.RequestWithBucketID("GET", uri+"?"+queryParams.Encode(), nil, uri) + if err != nil { + return + } + + err = unmarshal(body, &st) + return +} + // GuildMember returns a member of a guild. // guildID : The ID of a Guild. // userID : The ID of a User @@ -2933,29 +2956,3 @@ func (s *Session) GuildScheduledEventUsers(guildID, eventID string, limit int, w err = unmarshal(body, &st) return } - -// GuildMembersSearch returns a list of guild member objects whose username or nickname starts with a provided string -// guildID : The ID of a Guild -// query : Query string to match username(s) and nickname(s) against -// limit : Max number of members to return (1-1000) -func (s *Session) GuildMembersSearch(guildID, query string, limit int) (st []*Member, err error) { - uri := EndpointGuildMembersSearch(guildID) - - queryParams := url.Values{} - queryParams.Set("query", query) - if limit > 1 { - queryParams.Set("limit", strconv.Itoa(limit)) - } - - if len(queryParams) > 0 { - uri += "?" + queryParams.Encode() - } - - body, err := s.RequestWithBucketID("GET", uri, nil, EndpointGuildMembersSearch(guildID)) - if err != nil { - return - } - - err = unmarshal(body, &st) - return -}