Merge pull request #341 from kapi2289/read_by
[Feature] New `read_by` attribute of `Message`
This commit is contained in:
@@ -850,14 +850,22 @@ class Client(object):
|
|||||||
'id': thread_id,
|
'id': thread_id,
|
||||||
'message_limit': limit,
|
'message_limit': limit,
|
||||||
'load_messages': True,
|
'load_messages': True,
|
||||||
'load_read_receipts': False,
|
'load_read_receipts': True,
|
||||||
'before': before
|
'before': before
|
||||||
}))
|
}))
|
||||||
|
|
||||||
if j.get('message_thread') is None:
|
if j.get('message_thread') is None:
|
||||||
raise FBchatException('Could not fetch thread {}: {}'.format(thread_id, j))
|
raise FBchatException('Could not fetch thread {}: {}'.format(thread_id, j))
|
||||||
|
|
||||||
return list(reversed([graphql_to_message(message) for message in j['message_thread']['messages']['nodes']]))
|
messages = list(reversed([graphql_to_message(message) for message in j['message_thread']['messages']['nodes']]))
|
||||||
|
read_receipts = j['message_thread']['read_receipts']['nodes']
|
||||||
|
|
||||||
|
for message in messages:
|
||||||
|
for receipt in read_receipts:
|
||||||
|
if int(receipt['watermark']) >= int(message.timestamp):
|
||||||
|
message.read_by.append(receipt['actor']['id'])
|
||||||
|
|
||||||
|
return messages
|
||||||
|
|
||||||
def fetchThreadList(self, offset=None, limit=20, thread_location=ThreadLocation.INBOX, before=None):
|
def fetchThreadList(self, offset=None, limit=20, thread_location=ThreadLocation.INBOX, before=None):
|
||||||
"""Get thread list of your facebook account
|
"""Get thread list of your facebook account
|
||||||
|
@@ -180,6 +180,8 @@ class Message(object):
|
|||||||
timestamp = None
|
timestamp = None
|
||||||
#: Whether the message is read
|
#: Whether the message is read
|
||||||
is_read = None
|
is_read = None
|
||||||
|
#: A list of pepole IDs who read the message, works only with :func:`fbchat.Client.fetchThreadMessages`
|
||||||
|
read_by = None
|
||||||
#: A dict with user's IDs as keys, and their :class:`MessageReaction` as values
|
#: A dict with user's IDs as keys, and their :class:`MessageReaction` as values
|
||||||
reactions = None
|
reactions = None
|
||||||
#: The actual message
|
#: The actual message
|
||||||
@@ -201,6 +203,7 @@ class Message(object):
|
|||||||
attachments = []
|
attachments = []
|
||||||
self.attachments = attachments
|
self.attachments = attachments
|
||||||
self.reactions = {}
|
self.reactions = {}
|
||||||
|
self.read_by = []
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return self.__unicode__()
|
return self.__unicode__()
|
||||||
|
Reference in New Issue
Block a user