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.
This commit is contained in:
Arthur Jovart 2021-08-29 00:20:38 +02:00
parent 6bcc717e63
commit dad5926720
No known key found for this signature in database
GPG Key ID: DE4444AAAAAAAAAA

View File

@ -42,6 +42,7 @@ from typing import (
overload,
)
import discord
from . import utils, abc
from .role import Role
from .member import Member, VoiceState
@ -1715,6 +1716,8 @@ class Guild(Hashable):
You do not have access to the guild.
HTTPException
Fetching the member failed.
NotFound
A member with that ID does not exist.
Returns
--------
@ -1724,6 +1727,34 @@ class Guild(Hashable):
data = await self._state.http.get_member(self.id, member_id)
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 discord.NotFound:
return None
async def fetch_ban(self, user: Snowflake) -> BanEntry:
"""|coro|