def extract_text_from_event()

in shared/openai-slackbot/openai_slackbot/utils/slack.py [0:0]


def extract_text_from_event(event) -> str:
    """Extracts text from either plaintext and block message."""

    # Extract text from plaintext message.
    text = event.get("text")
    if text:
        return text

    # Extract text from message blocks.
    texts = []
    attachments = event.get("attachments", [])
    for attachment in attachments:
        attachment_message_blocks = attachment.get("message_blocks", [])
        for amb in attachment_message_blocks:
            message_blocks = amb.get("message", {}).get("blocks", [])
            for mb in message_blocks:
                mb_elements = mb.get("elements", [])
                for mbe in mb_elements:
                    mbe_elements = mbe.get("elements", [])
                    for mbee in mbe_elements:
                        if mbee.get("type") == "text":
                            texts.append(mbee["text"])

    return " ".join(texts).strip()