slack: Add users.info support and a User class

For finding information about users.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This commit is contained in:
Anna Schumaker 2015-05-26 16:22:05 -04:00
parent 48baf65574
commit 776ad5b1fa
3 changed files with 47 additions and 12 deletions

View File

@ -3,6 +3,8 @@
#
from . import api
from . import auth
from . import users
from datetime import datetime
class Channel:
@ -16,10 +18,10 @@ class Channel:
self.__last_ts = json.get("last_read", None)
def __str__(self):
return "<Channel id:%s name:%s is_member:%s>" % (self.__id, self.__name, self.__member)
def __repr__(self):
return self.__str__()
topic=""
if self.__topic != "":
topic = "\nTopic: %s" % self.__topic
return "%s: %s%s" % (self.__name, self.__purpose, topic)
def fetch_info(self):
json = info(self.__id)
@ -44,18 +46,15 @@ class Channel:
class Message:
def __init__(self, json):
self.__time = json["ts"]
self.__user = json["user"]
self.__time = datetime.fromtimestamp(float(json["ts"]))
self.__user = users.info(json["user"])
self.__text = json["text"].encode("utf-8").decode("latin-1")
def __lt__(self, other):
return self.__time < other.__time
def __str__(self):
return "<Message time:%s user:%s text:%s>" % (self.__time, self.__user, self.__text)
def __repr__(self):
return self.__str__()
return "%s %s: %s" % (self.__time.time(), self.__user.name(), self.__text)
@ -76,7 +75,6 @@ def info(channel):
return None
return ret["channel"]
def list():
ret = api.call("channels.list", token = auth.token())
if ret["ok"] == False:

34
slack/users.py Normal file
View File

@ -0,0 +1,34 @@
#
# Copyright 2015 (c) Anna Schumaker
#
from . import api
from . import auth
__USERS = dict()
class User:
def __init__(self, json):
self.__user = json.get("name", "")
self.__first = json["profile"].get("first_name", "")
self.__last = json["profile"].get("last_name", "")
def name(self):
if self.__first == "" and self.__last == "":
return self.__user
return "%s %s" % (self.__first, self.__last)
def info(user):
ret = __USERS.get(user, None)
if ret:
return ret
ret = api.call("users.info", token = auth.token(), user = user);
if ret["ok"] == False:
return None
ret = User(ret["user"])
__USERS[user] = ret
return ret

View File

@ -13,7 +13,10 @@ for channel in slack.channels.list():
continue
if channel.unread_count() == 0 or channel.unread_count() == None:
continue
print(channel.read())
print(channel)
for message in channel.read():
print(message)
print()
#def _write_message(fout, user, message):
# dt = datetime.fromtimestamp(float(message["ts"]))