From ebaf74e7840764c1a6a8562e131e923442fd530f Mon Sep 17 00:00:00 2001 From: Rapptz Date: Fri, 29 Apr 2016 22:29:56 -0400 Subject: [PATCH] Sort member.roles by ID but keep the default role in index 0. This should make the events checking if `before` and `after` roles are equivalent more sane for users. --- discord/state.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/discord/state.py b/discord/state.py index 850a74f95..08fb947de 100644 --- a/discord/state.py +++ b/discord/state.py @@ -324,11 +324,14 @@ class ConnectionState: member.nick = data['nick'] # update the roles - member.roles = [server.default_role] + member.roles = [] for role in server.roles: if role.id in data['roles']: member.roles.append(role) + # sort the roles by ID since they can be "randomised" + member.roles.sort(key=lambda r: r.id) + member.roles.insert(0, server.default_role) self.dispatch('member_update', old_member, member) def _get_create_server(self, data):