Discord Node devuelve error repentinamente al subir una imagen (binaria)

He estado usando esta automatización en el pasado sin problemas. La configuración es la siguiente: el nodo HTTP descarga una imagen y la devuelve como archivo (binario). Puedo ver y descargar esa imagen desde el flujo de trabajo de n8n, lo que significa que esa parte sigue funcionando. Esa imagen se pasa entonces a un nodo de Discord que envía un mensaje e adjunta la imagen como File. El método de conexión es Webhook.

Esto ha funcionado sin problemas. Recientemente lo reactivé pero ahora el nodo de Discord devuelve el siguiente error:

El argumento “chunk” debe ser de tipo string o una instancia de Buffer o Uint8Array. Se recibió tipo boolean (false) [item 0]

Item 0 debería ser el primer elemento en los datos de entrada. Sin embargo, ese elemento tiene una imagen válida (datos binarios).

No hay discrepancia entre datos JSON y datos binarios, ambos tienen la misma cantidad de elementos.
El flujo de trabajo funciona bien si elimino el “File” del nodo de Discord.

Lo único que quiero es que el mensaje tenga una imagen. Así que si hay otro método para lograr eso, estoy feliz. Tengo una URL de la imagen pero incluso cuando la inserto en “URL image” o “URL Thumbnail” no aparece en Discord.

Hola @Utz

La forma más confiable de eludir este error y recuperar tus imágenes en Discord es usar el nodo HTTP Request para comunicarte directamente con el Webhook de Discord.

Aquí está exactamente cómo configurarlo:

  1. Reemplaza el nodo Discord con un nodo HTTP Request.
  2. Method: Configúralo en POST.
  3. URL: Pega aquí tu URL del Webhook de Discord.
  4. Authentication: None (Los Webhooks se autentican por la URL misma).
  5. Send Body: Activa esto On​.
  6. Body Content Type: Selecciona Form-Data (Multipart).
  7. Specify Body Parameters:
    • File Upload:
      • Haz clic en Add Parameter →→ selecciona Binary File​.
      • Name: Ingresa file (Esta es la clave exacta que Discord espera).
      • Input Data Field Name: Ingresa thumbdata (coincidiendo con el nombre de tu propiedad binaria).
    • Message/Embeds:
      • Haz clic en Add Parameter →→ selecciona Text​.
      • Name: Ingresa payload_json.
      • Value: Ingresa el JSON para tu mensaje y embeds.
      • Ejemplo: {"content": "¡Aquí está tu imagen!", "embeds": [{"title": "Título de la imagen", "description": "Descripción aquí"}]}
        (Puedes usar expresiones aquí para extraer datos de tus nodos anteriores, solo asegúrate de que el resultado final sea una cadena JSON válida).

Gracias, pero eso no parece funcionar.

Tan pronto como uso “Form-Data” falla con varios errores.

Si uso solo un parámetro (“Text” no está disponible, solo Form-Data)

type: form data

name: payload_json

value: {"content":"test message"}

Resulta en este error:

data should be a string, Buffer or Uint8Array [item 0]

Si agrego el parámetro binary, el error cambia a:

The connection to the server was closed unexpectedly, perhaps it is offline. You can retry the request immediately or wait and retry later. [item 0]

Cuando uso el tipo “JSON” en su lugar, puedo enviar un mensaje de prueba simple, así que el problema no es Discord sino N8N.

Prueba esto

  1. Copia el código JSON de arriba.
  2. Ve a tu lienzo de flujo de trabajo n8n.
  3. Cmd+V (Mac) o Ctrl+V (Windows) para pegar los nodos directamente en el lienzo.
  4. Haz doble clic en el nodo Discord Fix Code.
  5. Encuentra la línea: const WEBHOOK_URL = 'REPLACE_WITH_YOUR_DISCORD_WEBHOOK_URL'; y pega tu URL real dentro de las comillas.
  6. Revisa la línea BINARY_PROPERTY. Si tu campo binario se llama thumbdata, cambia 'data' a 'thumbdata'.

Lo resolví actualizando N8N a la última versión. El nodo de Discord ahora funciona como se pretendía y como lo hacía en el pasado.