Skip to content

Commit 90d27c5

Browse files
feat: implement Guild.search_members (Pycord-Development#2418)
* implement guild member search * clarification. * style(pre-commit): auto fixes from pre-commit.com hooks * cl * undo iteration * style(pre-commit): auto fixes from pre-commit.com hooks --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent 59b9b32 commit 90d27c5

File tree

3 files changed

+46
-0
lines changed

3 files changed

+46
-0
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ These changes are available on the `master` branch, but have not yet been releas
1818
([#2390](https://github.com/Pycord-Development/pycord/pull/2390))
1919
- Added `bridge_option` decorator. Required for `bridge.Bot` in 2.7.
2020
([#2417](https://github.com/Pycord-Development/pycord/pull/2417))
21+
- Added `Guild.search_members`.
22+
([#2418](https://github.com/Pycord-Development/pycord/pull/2418))
2123

2224
### Fixed
2325

discord/guild.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2027,6 +2027,36 @@ def fetch_members(
20272027

20282028
return MemberIterator(self, limit=limit, after=after)
20292029

2030+
async def search_members(self, query: str, *, limit: int = 1000) -> list[Member]:
2031+
"""Search for guild members whose usernames or nicknames start with the query string. Unlike :meth:`fetch_members`, this does not require :meth:`Intents.members`.
2032+
2033+
.. note::
2034+
2035+
This method is an API call. For general usage, consider filtering :attr:`members` instead.
2036+
2037+
.. versionadded:: 2.6
2038+
2039+
Parameters
2040+
----------
2041+
query: :class:`str`
2042+
Searches for usernames and nicknames that start with this string, case-insensitive.
2043+
limit: Optional[:class:`int`]
2044+
The maximum number of members to retrieve, up to 1000.
2045+
2046+
Returns
2047+
-------
2048+
List[:class:`Member`]
2049+
The list of members that have matched the query.
2050+
2051+
Raises
2052+
------
2053+
HTTPException
2054+
Getting the members failed.
2055+
"""
2056+
2057+
data = await self._state.http.search_members(self.id, query, limit)
2058+
return [Member(data=m, guild=self, state=self._state) for m in data]
2059+
20302060
async def fetch_member(self, member_id: int, /) -> Member:
20312061
"""|coro|
20322062

discord/http.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1636,6 +1636,20 @@ def get_members(
16361636
r = Route("GET", "/guilds/{guild_id}/members", guild_id=guild_id)
16371637
return self.request(r, params=params)
16381638

1639+
def search_members(
1640+
self,
1641+
guild_id: Snowflake,
1642+
query: str,
1643+
limit: int,
1644+
) -> Response[list[member.MemberWithUser]]:
1645+
params: dict[str, Any] = {
1646+
"query": query,
1647+
"limit": limit,
1648+
}
1649+
1650+
r = Route("GET", "/guilds/{guild_id}/members/search", guild_id=guild_id)
1651+
return self.request(r, params=params)
1652+
16391653
def get_member(
16401654
self, guild_id: Snowflake, member_id: Snowflake
16411655
) -> Response[member.MemberWithUser]:

0 commit comments

Comments
 (0)