Discord Bot 完整接入指南:從零開始打造你的 AI 助理(含資安風險分析)

管管
科技趨勢
Discord Bot 開發與資安

想讓 AI 助理進駐你的 Discord?這篇文章將帶你從零開始,完整了解 Discord Bot 的接入流程、運作原理,以及你必須知道的資安風險與防護措施

為什麼選擇 Discord?

在眾多即時通訊平台中,Discord 成為開發者和社群的首選,原因有三:

  • 完全免費:不像 Google Chat 需要 Workspace 帳號,Discord 對所有人開放
  • 不需要公開伺服器:Bot 主動連線到 Discord,不需要設定 Webhook、Tunnel 或公開 IP
  • 豐富的 API:支援文字、語音、反應、斜線指令等多元互動方式

Discord Bot 運作原理

理解 Bot 如何運作,是掌握資安風險的第一步。

連線架構

Discord Bot 採用 WebSocket 持久連線,與傳統 Webhook 不同:

傳統 Webhook(如 Google Chat):
外部服務 → POST 請求 → 你的伺服器 → 處理 → 回應
(需要公開 URL)

Discord Bot(WebSocket):
你的 Bot → 建立連線 → Discord 伺服器 → 推送事件
(不需要公開 URL)

這意味著:

  • 你的伺服器不需要對外開放任何 Port
  • 所有通訊都是 Bot 主動發起的加密連線
  • 即使在 NAT 或防火牆後面也能正常運作

完整設定教學

步驟一:建立 Discord Application

  1. 前往 Discord Developer Portal
  2. 點擊 New Application,輸入名稱(如「我的 AI 助理」)
  3. 點擊 Create

步驟二:建立 Bot 帳號

  1. 在左側選單點擊 Bot
  2. 點擊 Add Bot(或 Reset Token 如果已存在)
  3. 複製 Token — 這是 Bot 的「密碼」,務必妥善保管

步驟三:開啟必要權限(重要!)

在 Bot 頁面往下滾動,找到 Privileged Gateway Intents

  • MESSAGE CONTENT INTENT — 讓 Bot 能讀取訊息內容
  • SERVER MEMBERS INTENT — 讓 Bot 能識別伺服器成員

⚠️ 注意:如果 Bot 加入超過 100 個伺服器,需要向 Discord 申請驗證才能使用這些權限。

步驟四:產生邀請連結

  1. 左側選單點擊 OAuth2URL Generator
  2. Scopes 區塊勾選:
    • bot
    • applications.commands(支援斜線指令)
  3. Bot Permissions 區塊勾選需要的權限:
    • ✅ Send Messages(發送訊息)
    • ✅ Read Message History(讀取歷史訊息)
    • ✅ Add Reactions(新增反應)
    • ✅ Use Slash Commands(使用斜線指令)
  4. 複製最下方的 Generated URL
  5. 用瀏覽器開啟連結,選擇要加入的伺服器

步驟五:設定你的 Bot 服務

以 Clawdbot 為例,只需要在設定檔加入:

{
  "channels": {
    "discord": {
      "enabled": true,
      "token": "你的Bot Token"
    }
  }
}

啟動服務後,Bot 就會自動連線到 Discord。

資安風險分析

雖然 Discord Bot 的架構相對安全,但仍有幾個風險點需要注意:

🔴 風險一:Bot Token 外洩

嚴重程度:極高

Bot Token 等同於 Bot 的「密碼」,一旦外洩:

  • 攻擊者可以完全控制你的 Bot
  • 以你的 Bot 身份發送訊息、執行指令
  • 存取 Bot 有權限的所有伺服器和頻道

防護措施:

  • 永遠不要把 Token 寫在程式碼中並提交到 Git
  • 使用環境變數或加密的設定檔儲存 Token
  • 定期輪換 Token(在 Developer Portal 點 Reset Token)
  • 如果懷疑外洩,立即重置 Token

🟠 風險二:權限過大

嚴重程度:中高

Bot 的權限越大,風險越高。常見的過度授權:

  • Administrator:擁有伺服器所有權限,非常危險
  • Manage Messages:可以刪除任何人的訊息
  • Manage Roles:可以修改角色權限

防護措施:

  • 遵循最小權限原則:只授予 Bot 真正需要的權限
  • 定期檢查 Bot 的權限設定
  • 在測試環境使用限制更多的權限

🟡 風險三:訊息內容存取

嚴重程度:中

開啟 Message Content Intent 後,Bot 可以讀取所有它能看到的訊息:

  • 可能包含敏感資訊(密碼、個資、私密對話)
  • 如果 Bot 有漏洞,這些資訊可能被竊取

防護措施:

  • Bot 只加入必要的伺服器和頻道
  • 設定 Bot 的存取控制(allowlist/pairing)
  • 確保 Bot 不會記錄或傳輸不必要的訊息內容
  • 在敏感頻道不要給 Bot 讀取權限

🟢 風險四:DDoS 與濫用

嚴重程度:低中

如果 Bot 回應所有訊息且沒有速率限制:

  • 可能被利用來發送大量訊息(洗頻)
  • 消耗你的 API 額度和運算資源
  • 違反 Discord ToS 導致 Bot 被封禁

防護措施:

  • 實作速率限制(Rate Limiting)
  • 設定 Bot 只回應特定使用者或角色
  • 使用 pairing/allowlist 機制限制存取

安全設定建議

推薦的 Bot 設定(以 Clawdbot 為例)

{
  "channels": {
    "discord": {
      "enabled": true,
      "token": "環境變數或加密儲存",
      "dm": {
        "policy": "pairing"  // 需要配對碼才能使用
      },
      "groupPolicy": "allowlist",  // 伺服器頻道需要明確允許
      "guilds": {
        "你的伺服器ID": {
          "allow": true,
          "requireMention": true  // 需要 @Bot 才會回應
        }
      }
    }
  }
}

權限檢查清單

權限建議說明
Administrator❌ 永遠不要風險太高,沒有任何 Bot 需要這個
Send Messages✅ 需要基本功能
Read Message History⚠️ 視需求如果需要上下文才開啟
Add Reactions✅ 推薦用於確認收到訊息
Manage Messages❌ 避免除非真的需要刪除訊息
Manage Roles❌ 避免權限管理應該由人類操作

比較:Discord vs 其他平台

項目DiscordGoogle ChatSlackTelegram
費用免費需 Workspace免費版有限制免費
公開 URL不需要需要需要需要*
設定難度簡單複雜中等簡單
企業適用⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐

*Telegram 可以用 Long Polling 模式,不需要公開 URL

常見問題

Q: Bot 連線成功但不回應訊息?

檢查以下幾點:

  1. Message Content Intent 是否已開啟?
  2. DM 是否需要 pairing?(第一次使用會收到配對碼)
  3. 伺服器頻道是否在 allowlist 中?
  4. 是否需要 @mention Bot?

Q: Token 不小心外洩怎麼辦?

  1. 立即到 Developer Portal 點擊 Reset Token
  2. 更新你的 Bot 設定使用新 Token
  3. 檢查 Bot 的活動記錄是否有異常
  4. 考慮建立全新的 Application

Q: 如何限制只有特定人能用 Bot?

設定 dm.policy: "allowlist" 並在 dm.allowFrom 中列出允許的使用者 ID:

"dm": {
  "policy": "allowlist",
  "allowFrom": ["使用者ID1", "使用者ID2"]
}

結語

Discord Bot 是目前最容易上手的 AI 助理接入方式之一。它不需要複雜的伺服器設定、不需要公開 IP、也不需要付費訂閱。

但方便不代表可以忽視安全。請務必:

  • 🔐 保護好你的 Bot Token
  • 🎯 只授予必要的權限
  • 🚪 設定適當的存取控制
  • 📊 定期檢查 Bot 的活動

做好這些,你就能安心享受 AI 助理帶來的便利了!

圖片來源:Unsplash / Zulfugar Karimov (@zulfugarkarimov)