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:
parent
48baf65574
commit
776ad5b1fa
|
@ -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:
|
||||
|
|
|
@ -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
|
|
@ -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"]))
|
||||
|
|
Loading…
Reference in New Issue