import re
import html

def limpiar_para_voz(texto):
    if not isinstance(texto, str):
        return ""

    texto = html.unescape(texto)

    # Eliminar bloques de código completos
    texto = re.sub(
        r"```[\s\S]*?```",
        " Se ha omitido un bloque de código. ",
        texto
    )

    # Convertir enlaces Markdown a texto natural
    texto = re.sub(
        r"\[([^\]]+)\]\(https?://[^)]+\)",
        r"\1",
        texto
    )

    # Eliminar imágenes Markdown
    texto = re.sub(
        r"!\[[^\]]*\]\([^)]+\)",
        "",
        texto
    )

    # Quitar símbolos de formato Markdown
    texto = re.sub(r"(?m)^\s{0,3}#{1,6}\s*", "", texto)
    texto = re.sub(r"(?m)^\s*[-*+]\s+", "", texto)
    texto = re.sub(r"(?m)^\s*\d+[.)]\s+", "", texto)

    texto = texto.replace("*", "")
    texto = texto.replace("`", "")
    texto = texto.replace("_", " ")

    # Evitar que lea URLs completas
    texto = re.sub(
        r"https?://\S+",
        "enlace disponible en el panel",
        texto
    )

    # Normalizar espacios y saltos de línea
    texto = re.sub(r"\s+", " ", texto).strip()

    return texto
