Discord Node retourne soudainement une erreur lors du téléchargement d'une image (binaire)

J’utilise cette automatisation depuis un certain temps sans problème. La configuration est la suivante : le nœud HTTP télécharge une image et la retourne en tant que fichier (binaire). Je peux afficher et télécharger cette image depuis le workflow n8n, ce qui signifie que cette partie fonctionne toujours. Cette image est ensuite transmise à un nœud discord qui envoie un message et joint l’image en tant que fichier. La méthode de connexion est Webhook.

Cela fonctionnait sans problème auparavant. Je l’ai récemment réactivé, mais maintenant le nœud Discord retourne l’erreur suivante :

L’argument « chunk » doit être de type string ou une instance de Buffer ou Uint8Array. Type reçu : boolean (false) [élément 0]

L’élément 0 devrait être le premier élément des données d’entrée. Cependant, cet élément contient bien une image valide (données binaires).

Il n’y a aucune différence entre les données JSON et les données binaires, elles ont le même nombre d’éléments.
Le workflow fonctionne bien si je retire le « fichier » du nœud Discord.

Tout ce que je veux, c’est que le message ait une image. Donc s’il y a une autre méthode pour y parvenir, je suis intéressé. J’ai une URL vers l’image, mais même en l’insérant dans « URL image » ou « URL Thumbnail », elle n’apparaît pas sur Discord.

Salut @Utz

Le moyen le plus fiable de contourner ce bug et de récupérer vos images dans Discord est d’utiliser le nœud HTTP Request pour communiquer directement avec le Webhook Discord.

Voici exactement comment le configurer :

  1. Remplacez le nœud Discord par un nœud HTTP Request.
  2. Method : Réglez sur POST.
  3. URL : Collez votre URL de Webhook Discord ici.
  4. Authentication : Aucune (les Webhooks sont authentifiés par l’URL elle-même).
  5. Send Body : Basculez sur On.
  6. Body Content Type : Sélectionnez Form-Data (Multipart).
  7. Specify Body Parameters :
    • File Upload :
      • Cliquez sur Add Parameter →→ sélectionnez Binary File.
      • Name : Entrez file (C’est la clé exacte que Discord attend).
      • Input Data Field Name : Entrez thumbdata (correspondant à votre nom de propriété binaire).
    • Message/Embeds :
      • Cliquez sur Add Parameter →→ sélectionnez Text.
      • Name : Entrez payload_json.
      • Value : Entrez le JSON pour votre message et embeds.
      • Exemple : {"content": "Voici votre image!", "embeds": [{"title": "Titre de l'image", "description": "Description ici"}]}
        (Vous pouvez utiliser des expressions ici pour extraire les données de vos nœuds précédents, assurez-vous simplement que le résultat final est une chaîne JSON valide).

Merci mais cela ne semble pas fonctionner.

Dès que j’utilise « Form-Data », cela échoue avec diverses erreurs.

Si j’utilise un seul paramètre (« Text » n’est pas disponible, seul Form-Data)

type: form data

name: payload_json

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

Cela génère cette erreur :

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

Si j’ajoute le paramètre binaire, l’erreur change en :

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]

Quand j’utilise le type « JSON » à la place, je peux envoyer un simple message de test, donc le problème n’est pas Discord mais N8N.

Essayez ceci

  1. Copiez le code JSON ci-dessus.
  2. Allez sur votre canevas de flux de travail n8n.
  3. Cmd+V (Mac) ou Ctrl+V (Windows) pour coller les nœuds directement sur le canevas.
  4. Double-cliquez sur le nœud Discord Fix Code.
  5. Trouvez la ligne : const WEBHOOK_URL = 'REPLACE_WITH_YOUR_DISCORD_WEBHOOK_URL'; et collez votre URL réelle entre les guillemets.
  6. Vérifiez la ligne BINARY_PROPERTY. Si votre champ binaire s’appelle thumbdata, changez 'data' en 'thumbdata'.

Résolu en mettant à jour N8N vers la dernière version. Le nœud Discord fonctionne maintenant comme prévu et comme avant.