Discord Node 上傳圖像 (二進制) 時突然返回錯誤

我過去一直在使用此自動化,沒有任何問題。設置如下:HTTP 節點下載映像並將其作為文件(二進制)返回。我可以從 n8n 工作流程中查看和下載該映像,這表示該部分仍可正常工作。然後將該映像傳遞給 Discord 節點,該節點發送消息並將映像作為文件附加。連接方法是 Webhook。

這之前一直運行完美。最近我重新啟用它,但現在 Discord 節點返回以下錯誤:

“chunk” 參數必須是字符串、Buffer 或 Uint8Array 的實例。收到類型 boolean (false) [項目 0]

項目 0 應該是輸入數據中的第一項。但是該項確實具有有效的映像(二進制數據)。

json 數據和二進制數據之間沒有不匹配,兩者的項目數量相同。
如果我從 Discord 節點中移除「文件」,工作流程就可以正常工作。

我所希望的是消息中包含映像。因此,如果有其他方法可以實現,我也很樂意。我確實有一個映像的 URL,但即使將其插入「URL 映像」或「URL 縮略圖」,它也不會在 Discord 中顯示。

你好 @Utz

繞過此錯誤並將圖片恢復回 Discord 的最可靠方法是使用 HTTP Request 節點直接與 Discord Webhook 通訊。

以下是確切的設定方式:

  1. 將 Discord 節點替換為 HTTP Request 節點
  2. Method: 設為 POST
  3. URL: 在此貼上你的 Discord Webhook URL。
  4. Authentication: 無(Webhook 通過 URL 本身進行驗證)。
  5. Send Body: 切換為開啟
  6. Body Content Type: 選擇 Form-Data (Multipart)
  7. 指定 Body 參數:
    • File Upload:
      • 點擊 Add Parameter →→ 選擇 Binary File
      • Name: 輸入 file(這是 Discord 期望的確切鍵名)。
      • Input Data Field Name: 輸入 thumbdata(對應你的二進位屬性名稱)。
    • Message/Embeds:
      • 點擊 Add Parameter →→ 選擇 Text
      • Name: 輸入 payload_json
      • Value: 輸入你的訊息和嵌入的 JSON。
      • 範例: {"content": "Here is your image!", "embeds": [{"title": "Image Title", "description": "Description here"}]}
        (你可以在此使用表達式從之前的節點提取資料,只需確保最終結果是有效的 JSON 字符串即可)。

感謝您的協助,但這似乎不起作用。

只要我使用「Form-Data」就會失敗,並出現各種錯誤。

如果我只使用一個參數(「Text」不可用,只能使用 Form-Data)

type: form data

name: payload_json

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

結果會產生此錯誤:

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

如果我新增二進位參數,錯誤會變成:

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]

當我改用「JSON」類型時,我可以傳送簡單的測試訊息,所以問題不在 Discord,而在 N8N。

試試這個

  1. 複製上面的 JSON 代碼。
  2. 前往你的 n8n 工作流程畫布。
  3. Cmd+V(Mac)或 Ctrl+V(Windows)直接將節點貼到畫布上。
  4. 雙擊 Discord Fix Code 節點。
  5. 找到這一行:const WEBHOOK_URL = 'REPLACE_WITH_YOUR_DISCORD_WEBHOOK_URL';,並將你的實際 URL 貼在引號內。
  6. 檢查 BINARY_PROPERTY 這一行。如果你的二進制欄位名稱是 thumbdata,請將 'data' 改為 'thumbdata'

通過更新 N8N 至最新版本解決了。Discord 節點現在按預期運作,並與過去的表現一致。