Merge pull request #341 from kapi2289/read_by

[Feature] New `read_by` attribute of `Message`
This commit is contained in:
Mads Marquart
2018-09-27 20:56:13 +02:00
committed by GitHub
2 changed files with 13 additions and 2 deletions

View File

@@ -850,14 +850,22 @@ class Client(object):
'id': thread_id,
'message_limit': limit,
'load_messages': True,
'load_read_receipts': False,
'load_read_receipts': True,
'before': before
}))
if j.get('message_thread') is None:
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):
"""Get thread list of your facebook account

View File

@@ -180,6 +180,8 @@ class Message(object):
timestamp = None
#: Whether the message is read
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
reactions = None
#: The actual message
@@ -201,6 +203,7 @@ class Message(object):
attachments = []
self.attachments = attachments
self.reactions = {}
self.read_by = []
def __repr__(self):
return self.__unicode__()