diff --git a/slackclient/server.py b/slackclient/server.py index f6b105665..2a39afd5f 100644 --- a/slackclient/server.py +++ b/slackclient/server.py @@ -130,7 +130,13 @@ def parse_user_data(self, user_data): user["tz"] = "unknown" if "real_name" not in user: user["real_name"] = user["name"] - self.attach_user(user["name"], user["id"], user["real_name"], user["tz"]) + if "email" not in user["profile"]: + user["profile"]["email"] = "" + self.attach_user(user["name"], + user["id"], + user["real_name"], + user["tz"], + user["profile"]["email"]) def send_to_websocket(self, data): """ @@ -196,8 +202,8 @@ def websocket_safe_read(self): raise return data.rstrip() - def attach_user(self, name, user_id, real_name, tz): - self.users.update({user_id: User(self, name, user_id, real_name, tz)}) + def attach_user(self, name, user_id, real_name, tz, email): + self.users.update({user_id: User(self, name, user_id, real_name, tz, email)}) def attach_channel(self, name, channel_id, members=None): if members is None: diff --git a/slackclient/user.py b/slackclient/user.py index 274bddbe2..1730b961e 100644 --- a/slackclient/user.py +++ b/slackclient/user.py @@ -1,10 +1,11 @@ class User(object): - def __init__(self, server, name, user_id, real_name, tz): + def __init__(self, server, name, user_id, real_name, tz, email): self.tz = tz self.name = name self.real_name = real_name self.server = server self.id = user_id + self.email = email def __eq__(self, compare_str): if compare_str in (self.id, self.name): diff --git a/tests/test_server.py b/tests/test_server.py index 8ce59c7c7..496924c7f 100644 --- a/tests/test_server.py +++ b/tests/test_server.py @@ -42,6 +42,7 @@ def test_server_parse_user_data(server, rtm_start_fixture): userbyid = server.users.find('U10CX1234') assert type(userbyid) == User assert userbyid == "fakeuser" + assert userbyid.email == 'fakeuser@example.com' # Don't find invalid user userbyid = server.users.find('invaliduser') assert type(userbyid) != User