aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRapptz <[email protected]>2016-03-27 15:12:05 -0400
committerRapptz <[email protected]>2016-03-27 15:12:05 -0400
commit53a240e0d304277fa80a7b3813cca3790e61039a (patch)
tree7723e0e5cbe85714830b559bc2030c7fcbad8e8e
parentClarify Channel.position documentation. (diff)
downloaddiscord.py-53a240e0d304277fa80a7b3813cca3790e61039a.tar.xz
discord.py-53a240e0d304277fa80a7b3813cca3790e61039a.zip
Add Member.colour property to get rendered role colour of a member.
-rw-r--r--discord/member.py21
1 files changed, 20 insertions, 1 deletions
diff --git a/discord/member.py b/discord/member.py
index 3c95a5c4..86d818f3 100644
--- a/discord/member.py
+++ b/discord/member.py
@@ -28,6 +28,7 @@ from .user import User
from .game import Game
from .utils import parse_time
from .enums import Status
+from .colour import Colour
class Member(User):
"""Represents a Discord member to a :class:`Server`.
@@ -74,7 +75,7 @@ class Member(User):
self.deaf = kwargs.get('deaf')
self.mute = kwargs.get('mute')
self.joined_at = parse_time(kwargs.get('joined_at'))
- self.roles = kwargs.get('roles')
+ self.roles = kwargs.get('roles', [])
self.status = Status.offline
game = kwargs.get('game', {})
self.game = Game(**game) if game else None
@@ -103,3 +104,21 @@ class Member(User):
# we switched channels
if self.voice_channel is not None:
self.voice_channel.voice_members.append(self)
+
+ @property
+ def colour(self):
+ """A property that returns a :class:`Colour` denoting the rendered colour
+ for the member. If the default colour is the one rendered then an instance
+ of :meth:`Colour.default` is returned.
+
+ There is an alias for this under ``color``.
+ """
+
+ # highest order of the colour is the one that gets rendered.
+ if self.roles:
+ role = max(self.roles, key=lambda r: r.position)
+ return role.colour
+ else:
+ return Colour.default()
+
+ color = colour