最近這幾天在玩自動化,想把 n8n 和 Discord 給串起來。原本以為只是「拉個節點、填個 Token」這麼簡單,結果卻花了我不原本預期數倍的時間在 Debug。

這篇文章不教基礎教學,只記錄那些讓你懷疑人生、撞牆撞到頭破血流的關鍵雷點。

雷點一:機器人「已讀不回」的啞巴之謎

這是最讓我崩潰的問題。 我在 n8n 裡設定好了 Discord Trigger,Token 也填了,連線測試也過了。 回到 Discord 頻道,機器人是離線的。AI 可以不管是否上線,可以繼續 但是我不管怎麼打字,n8n 就是收不到 Trigger。

我檢查了頻道權限、檢查了 Bot 身分組,甚至懷疑是不是 Docker 網路問題。 最後發現兇手竟然是 Discord 官方的一個 「隱私設定」

解法:開啟隱形開關

Discord 為了保護隱私,現在預設 不讓機器人讀取訊息內容 (Message Content)。即使你是管理員,沒開這個開關,機器人就是瞎子。雖然我已經開了,但是個別權限沒有開,以及沒有開夠

  1. 進入 Discord Developer Portal -> 你的 App -> Bot 分頁。
  2. 往下捲,找到 Privileged Gateway Intents
  3. MESSAGE CONTENT INTENT 打開 (ON)
  4. (非常重要) 按下最底部的 Save Changes

開完之後,重啟 n8n Workflow,訊息瞬間就進來了。這個開關藏在設定深處,真的害人不淺。

雷點二:「Invalid URL」與卡死的 Workflow

在除錯過程中,我一度因為設定錯誤,導致 n8n 的 Workflow 卡在 Active 狀態,無法停止也無法存檔。 每當我按 “Deactivate”,它就噴出一個錯誤: Workflow could not be deactivated: ... "Invalid URL"

這讓我完全無法編輯,甚至想刪除這個 Workflow 都不行。

原因與解法

原因不明

如何自救?

  1. F5 大法:重新整理網頁沒用
  2. CLI 暴力解:如果 UI 真的救不回來,直接進後台下指令改資料庫狀態:
    # 把壞掉的 workflow 強制停用
    n8n update:workflow --id <WORKFLOW_ID> --active=false
    # deactive 後就能刪除了
    

總結

雖然過程跌跌撞撞,但解決這些問題後,看著機器人精準地回應每一個指令,成就感還是滿滿的。 希望這篇筆記能幫到正在同樣坑裡掙扎的朋友們:記得去開 Intent,那個開關真的很重要!

目前 bot 只能簡單回應,還沒真的做什麼有用的事情。

AI 協作宣告 (AI Collaboration Disclosure)

AI Generated Human Reviewed

本文內容由 AI 協作生成

  1. 素材來源:作者實際操作經驗與技術筆記。
  2. AI 工具:使用 Antigravity (Gemini) 協助除錯分析與文章撰寫。
  3. 人工審核:由哈爸本人確認觀點準確性並進行最終潤飾。