Skip to content

Commit c6a3f21

Browse files
committed
Added way to send url previews
sendUri(link, message) will send the preview for link below the message in chat
1 parent b461873 commit c6a3f21

2 files changed

Lines changed: 44 additions & 0 deletions

File tree

fbchat/_client.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1066,6 +1066,43 @@ def sendMessage(self, message, thread_id=None, thread_type=ThreadType.USER):
10661066
Message(text=message), thread_id=thread_id, thread_type=thread_type
10671067
)
10681068

1069+
def sendUri(self, uri, message=None, thread_id=None, thread_type=ThreadType.USER):
1070+
"""Send a uri preview to a thread.
1071+
1072+
Args:
1073+
uri: uri to preview
1074+
message (Message): Message to send
1075+
thread_id: User/Group ID to send to. See :ref:`intro_threads`
1076+
thread_type (ThreadType): See :ref:`intro_threads`
1077+
1078+
Returns:
1079+
:ref:`Message ID <intro_message_ids>` of the sent message
1080+
1081+
Raises:
1082+
FBchatException: If request failed
1083+
"""
1084+
1085+
urlData = self._state._uri_share_data({"uri": uri})
1086+
thread_id, thread_type = self._getThread(thread_id, thread_type)
1087+
thread = thread_type._to_class()(thread_id)
1088+
data = thread._to_send_data()
1089+
if message is not None:
1090+
data.update(message._to_send_data())
1091+
data["action_type"] = "ma-type:user-generated-message"
1092+
data["has_attachment"] = True
1093+
data["shareable_attachment[share_type]"] = urlData["share_type"]
1094+
for key in urlData["share_params"]:
1095+
if isinstance(urlData["share_params"][key], dict):
1096+
for key2 in urlData["share_params"][key]:
1097+
data[
1098+
"shareable_attachment[share_params][{}][{}]".format(key, key2)
1099+
] = urlData["share_params"][key][key2]
1100+
else:
1101+
data["shareable_attachment[share_params][{}]".format(key)] = urlData[
1102+
"share_params"
1103+
][key]
1104+
return self._doSendRequest(data)
1105+
10691106
def sendEmoji(
10701107
self,
10711108
emoji=None,

fbchat/_state.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -329,3 +329,10 @@ def _do_send_request(self, data):
329329
"Error when sending message: "
330330
"No message IDs could be found: {}".format(j)
331331
)
332+
333+
def _uri_share_data(self, data):
334+
data["image_height"] = 960
335+
data["image_width"] = 960
336+
data["__user"] = self.user_id
337+
j = self._post("/message_share_attachment/fromURI/", data)
338+
return j["payload"]["share_data"]

0 commit comments

Comments
 (0)