Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions discord/guild.py
Original file line number Diff line number Diff line change
Expand Up @@ -2462,6 +2462,37 @@

return threads

async def fetch_members_named(self, name: str, *, limit: Optional[int] = 1000) -> List[Member]:
"""|coro|
Returns a list of members whose username or nickname starts
with the provided `name`.
.. versionadded:: 2.?
Parameters
----------
name: :class:`str`
The string to match a username and nickname against.
limit: Optional[:class:`int`]
The maximum number of members to return. Max of 1000.
Raises
------
HTTPException
Getting the members failed.
s
Returns
------
List[:class:`Member`]
A list of matched members.
"""

state = self._state
data = await state.http.search_members(name, self.id, limit)

Check failure on line 2493 in discord/guild.py

View workflow job for this annotation

GitHub Actions / check 3.x

Argument of type "int | None" cannot be assigned to parameter "limit" of type "int" in function "search_members"   Type "int | None" is not assignable to type "int"     "None" is not assignable to "int" (reportArgumentType)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If your intention is to have limit be truly optional, so None means search all members, then you'll need to implement pagination for this endpoint, using the after= param.

return [Member(data=raw_member, guild=self, state=state) for raw_member in data]

async def fetch_members(self, *, limit: Optional[int] = 1000, after: SnowflakeTime = MISSING) -> AsyncIterator[Member]:
"""Retrieves an :term:`asynchronous iterator` that enables receiving the guild's members. In order to use this,
:meth:`Intents.members` must be enabled.
Expand Down
5 changes: 5 additions & 0 deletions discord/http.py
Original file line number Diff line number Diff line change
Expand Up @@ -1616,6 +1616,11 @@ def get_members(
r = Route('GET', '/guilds/{guild_id}/members', guild_id=guild_id)
return self.request(r, params=params)

def search_members(self, query: str, guild_id: Snowflake, limit: int) -> Response[List[member.MemberWithUser]]:
params: Dict[str, Any] = {'query': query, 'limit': limit}
r = Route('GET', '/guilds/{guild_id}/members/search', guild_id=guild_id)
return self.request(r, params=params)

def get_member(self, guild_id: Snowflake, member_id: Snowflake) -> Response[member.MemberWithUser]:
return self.request(Route('GET', '/guilds/{guild_id}/members/{member_id}', guild_id=guild_id, member_id=member_id))

Expand Down
Loading