Add try_member to guild. (#14)

* Add try_member to guild.

This also fix an omission in the fetch_member docs. fetch_member raises NotFound if the given user isn't in the guild.

* Optimize imports.
This commit is contained in:
Arthur 2021-09-02 02:47:15 +02:00 committed by GitHub
parent dba9a8abb9
commit c485e08ea0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -46,7 +46,7 @@ from . import utils, abc
from .role import Role from .role import Role
from .member import Member, VoiceState from .member import Member, VoiceState
from .emoji import Emoji from .emoji import Emoji
from .errors import InvalidData from .errors import InvalidData, NotFound
from .permissions import PermissionOverwrite from .permissions import PermissionOverwrite
from .colour import Colour from .colour import Colour
from .errors import InvalidArgument, ClientException from .errors import InvalidArgument, ClientException
@ -1723,6 +1723,8 @@ class Guild(Hashable):
You do not have access to the guild. You do not have access to the guild.
HTTPException HTTPException
Fetching the member failed. Fetching the member failed.
NotFound
A member with that ID does not exist.
Returns Returns
-------- --------
@ -1732,6 +1734,34 @@ class Guild(Hashable):
data = await self._state.http.get_member(self.id, member_id) data = await self._state.http.get_member(self.id, member_id)
return Member(data=data, state=self._state, guild=self) return Member(data=data, state=self._state, guild=self)
async def try_member(self, member_id: int, /) -> Optional[Member]:
"""|coro|
Returns a member with the given ID. This uses the cache first, and if not found, it'll request using :meth:`fetch_member`.
.. note::
This method might result in an API call.
Parameters
-----------
member_id: :class:`int`
The ID to search for.
Returns
--------
Optional[:class:`Member`]
The member or ``None`` if not found.
"""
member = self.get_member(member_id)
if member:
return member
else:
try:
return await self.fetch_member(member_id)
except NotFound:
return None
async def fetch_ban(self, user: Snowflake) -> BanEntry: async def fetch_ban(self, user: Snowflake) -> BanEntry:
"""|coro| """|coro|