From 53a240e0d304277fa80a7b3813cca3790e61039a Mon Sep 17 00:00:00 2001 From: Rapptz Date: Sun, 27 Mar 2016 15:12:05 -0400 Subject: [PATCH] Add Member.colour property to get rendered role colour of a member. --- discord/member.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/discord/member.py b/discord/member.py index 3c95a5c4e..86d818f31 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