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,
|
||||
'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
|
||||
|
@@ -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__()
|
||||
|
Reference in New Issue
Block a user