<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _getSendData(self, message=None, thread_id=None, thread_type=ThreadType.USER):
 """Returns the data needed to send a request to `SendURL`"""

        messageAndOTID = generateOfflineThreadingID()
        timestamp = now()
        data = {
            "client": "mercury",
            "author": "fbid:{}".format(self._uid),
            "timestamp": timestamp,
            "source": "source:chat:web",
            "offline_threading_id": messageAndOTID,
            "message_id": messageAndOTID,
            "threading_id": generateMessageID(self._client_id),
            "ephemeral_ttl_mode:": "0",
        }

        # Set recipient
        if thread_type in [ThreadType.USER, ThreadType.PAGE]:
            data["other_user_fbid"] = thread_id
        elif thread_type == ThreadType.GROUP:
            data["thread_fbid"] = thread_id

        if message is None:
            message = Message()

        if message.text or message.sticker or message.emoji_size:
            data["action_type"] = "ma-type:user-generated-message"

        if message.text:
            data["body"] = message.text

        for i, mention in enumerate(message.mentions):
            data["profile_xmd[{}][id]".format(i)] = mention.thread_id
            data["profile_xmd[{}][offset]".format(i)] = mention.offset
            data["profile_xmd[{}][length]".format(i)] = mention.length
            data["profile_xmd[{}][type]".format(i)] = "p"

        if message.emoji_size:
            if message.text:
                data["tags[0]"] = "hot_emoji_size:" + message.emoji_size.name.lower()
            else:
                data["sticker_id"] = message.emoji_size.value

        if message.sticker:
            data["sticker_id"] = message.sticker.uid

        if message.quick_replies:
            xmd = {"quick_replies": []}
            for quick_reply in message.quick_replies:
                q = dict()
                q["content_type"] = quick_reply._type
                q["payload"] = quick_reply.payload
                q["external_payload"] = quick_reply.external_payload
                q["data"] = quick_reply.data
                if quick_reply.is_response:
                    q["ignore_for_webhook"] = False
                if isinstance(quick_reply, QuickReplyText):
                    q["title"] = quick_reply.title
                if not isinstance(quick_reply, QuickReplyLocation):
                    q["image_url"] = quick_reply.image_url
                xmd["quick_replies"].append(q)
            if len(message.quick_replies) == 1 and message.quick_replies[0].is_response:
                xmd["quick_replies"] = xmd["quick_replies"][0]
            data["platform_xmd"] = json.dumps(xmd)

        if message.reply_to_id:
            data["replied_to_message_id"] = message.reply_to_id

        return data