Exemple #1
0
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}