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 api
|
||||||
from . import auth
|
from . import auth
|
||||||
|
from . import users
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
|
||||||
class Channel:
|
class Channel:
|
||||||
|
@ -16,10 +18,10 @@ class Channel:
|
||||||
self.__last_ts = json.get("last_read", None)
|
self.__last_ts = json.get("last_read", None)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "<Channel id:%s name:%s is_member:%s>" % (self.__id, self.__name, self.__member)
|
topic=""
|
||||||
|
if self.__topic != "":
|
||||||
def __repr__(self):
|
topic = "\nTopic: %s" % self.__topic
|
||||||
return self.__str__()
|
return "%s: %s%s" % (self.__name, self.__purpose, topic)
|
||||||
|
|
||||||
def fetch_info(self):
|
def fetch_info(self):
|
||||||
json = info(self.__id)
|
json = info(self.__id)
|
||||||
|
@ -44,18 +46,15 @@ class Channel:
|
||||||
|
|
||||||
class Message:
|
class Message:
|
||||||
def __init__(self, json):
|
def __init__(self, json):
|
||||||
self.__time = json["ts"]
|
self.__time = datetime.fromtimestamp(float(json["ts"]))
|
||||||
self.__user = json["user"]
|
self.__user = users.info(json["user"])
|
||||||
self.__text = json["text"].encode("utf-8").decode("latin-1")
|
self.__text = json["text"].encode("utf-8").decode("latin-1")
|
||||||
|
|
||||||
def __lt__(self, other):
|
def __lt__(self, other):
|
||||||
return self.__time < other.__time
|
return self.__time < other.__time
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "<Message time:%s user:%s text:%s>" % (self.__time, self.__user, self.__text)
|
return "%s %s: %s" % (self.__time.time(), self.__user.name(), self.__text)
|
||||||
|
|
||||||
def __repr__(self):
|
|
||||||
return self.__str__()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -76,7 +75,6 @@ def info(channel):
|
||||||
return None
|
return None
|
||||||
return ret["channel"]
|
return ret["channel"]
|
||||||
|
|
||||||
|
|
||||||
def list():
|
def list():
|
||||||
ret = api.call("channels.list", token = auth.token())
|
ret = api.call("channels.list", token = auth.token())
|
||||||
if ret["ok"] == False:
|
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
|
continue
|
||||||
if channel.unread_count() == 0 or channel.unread_count() == None:
|
if channel.unread_count() == 0 or channel.unread_count() == None:
|
||||||
continue
|
continue
|
||||||
print(channel.read())
|
print(channel)
|
||||||
|
for message in channel.read():
|
||||||
|
print(message)
|
||||||
|
print()
|
||||||
|
|
||||||
#def _write_message(fout, user, message):
|
#def _write_message(fout, user, message):
|
||||||
# dt = datetime.fromtimestamp(float(message["ts"]))
|
# dt = datetime.fromtimestamp(float(message["ts"]))
|
||||||
|
|
Loading…
Reference in New Issue