diff options
| author | Rapptz <[email protected]> | 2016-03-27 15:12:05 -0400 |
|---|---|---|
| committer | Rapptz <[email protected]> | 2016-03-27 15:12:05 -0400 |
| commit | 53a240e0d304277fa80a7b3813cca3790e61039a (patch) | |
| tree | 7723e0e5cbe85714830b559bc2030c7fcbad8e8e | |
| parent | Clarify Channel.position documentation. (diff) | |
| download | discord.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.py | 21 |
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 |