aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--discord/server.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/discord/server.py b/discord/server.py
index e087be20..d284572f 100644
--- a/discord/server.py
+++ b/discord/server.py
@@ -223,3 +223,41 @@ class Server(Hashable):
def created_at(self):
"""Returns the server's creation time in UTC."""
return utils.snowflake_time(self.id)
+
+ def get_member_named(self, name):
+ """Returns the first member found that matches the name provided.
+
+ The name can have an optional discriminator argument, e.g. "Jake#0001"
+ or "Jake" will both do the lookup. However the former will give a more
+ precise result. Note that the discriminator must have all 4 digits
+ for this to work.
+
+ If no member is found, ``None`` is returned.
+
+ Parameters
+ -----------
+ name : str
+ The name of the member to lookup with an optional discriminator.
+
+ Returns
+ --------
+ :class:`Member`
+ The member in this server with the associated name. If not found
+ then ``None`` is returned.
+ """
+
+ result = None
+ members = self.members
+ if len(name) > 5 and name[-5] == '#':
+ # The 5 length is checking to see if #0000 is in the string,
+ # as a#0000 has a length of 6, the minimum for a potential
+ # discriminator lookup.
+ potential_discriminator = name[-4:]
+
+ # do the actual lookup and return if found
+ # if it isn't found then we'll do a full name lookup below.
+ result = utils.get(members, name=name[:-5], discriminator=potential_discriminator)
+ if result is not None:
+ return result
+
+ return utils.get(members, name=name)