async def matrix_to_facebook(content: TextMessageEventContent, room_id: RoomID) -> SendParams: mentions = [] reply_to = None if content.relates_to.rel_type == RelationType.REPLY: message = await DBMessage.get_by_mxid(content.relates_to.event_id, room_id) if message: content.trim_reply_fallback() reply_to = message.fbid if content.format == Format.HTML and content.formatted_body: parsed = MatrixParser.parse(content.formatted_body) text = parsed.text mentions = [] for mention in parsed.entities: mxid = mention.extra_info["user_id"] user = await u.User.get_by_mxid(mxid, create=False) if user and user.fbid: fbid = user.fbid else: puppet = await pu.Puppet.get_by_mxid(mxid, create=False) if puppet: fbid = puppet.fbid else: continue mentions.append(Mention(user_id=str(fbid), offset=mention.offset, length=mention.length)) else: text = content.body return SendParams(text=text, mentions=mentions, reply_to=reply_to)
def matrix_to_facebook(content: TextMessageEventContent, room_id: RoomID) -> 'SendParams': mentions = [] reply_to_id = None if content.relates_to.rel_type == RelationType.REFERENCE: message = DBMessage.get_by_mxid(content.relates_to.event_id, room_id) if message: content.trim_reply_fallback() reply_to_id = message.fbid if content.format == Format.HTML and content.formatted_body: parsed = MatrixParser.parse(content.formatted_body) text = parsed.text mentions = [Mention(thread_id=mention.extra_info['fbid'], offset=mention.offset, length=mention.length) for mention in parsed.entities] else: text = content.body return {"text": text, "mentions": mentions, "reply_to_id": reply_to_id}