想讓 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
- 前往 Discord Developer Portal
- 點擊 New Application,輸入名稱(如「我的 AI 助理」)
- 點擊 Create
步驟二:建立 Bot 帳號
- 在左側選單點擊 Bot
- 點擊 Add Bot(或 Reset Token 如果已存在)
- 複製 Token — 這是 Bot 的「密碼」,務必妥善保管
步驟三:開啟必要權限(重要!)
在 Bot 頁面往下滾動,找到 Privileged Gateway Intents:
- ✅ MESSAGE CONTENT INTENT — 讓 Bot 能讀取訊息內容
- ✅ SERVER MEMBERS INTENT — 讓 Bot 能識別伺服器成員
⚠️ 注意:如果 Bot 加入超過 100 個伺服器,需要向 Discord 申請驗證才能使用這些權限。
步驟四:產生邀請連結
- 左側選單點擊 OAuth2 → URL Generator
- Scopes 區塊勾選:
- ✅
bot - ✅
applications.commands(支援斜線指令)
- ✅
- Bot Permissions 區塊勾選需要的權限:
- ✅ Send Messages(發送訊息)
- ✅ Read Message History(讀取歷史訊息)
- ✅ Add Reactions(新增反應)
- ✅ Use Slash Commands(使用斜線指令)
- 複製最下方的 Generated URL
- 用瀏覽器開啟連結,選擇要加入的伺服器
步驟五:設定你的 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 其他平台
| 項目 | Discord | Google Chat | Slack | Telegram |
|---|---|---|---|---|
| 費用 | 免費 | 需 Workspace | 免費版有限制 | 免費 |
| 公開 URL | 不需要 | 需要 | 需要 | 需要* |
| 設定難度 | 簡單 | 複雜 | 中等 | 簡單 |
| 企業適用 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐ |
*Telegram 可以用 Long Polling 模式,不需要公開 URL
常見問題
Q: Bot 連線成功但不回應訊息?
檢查以下幾點:
- Message Content Intent 是否已開啟?
- DM 是否需要 pairing?(第一次使用會收到配對碼)
- 伺服器頻道是否在 allowlist 中?
- 是否需要 @mention Bot?
Q: Token 不小心外洩怎麼辦?
- 立即到 Developer Portal 點擊 Reset Token
- 更新你的 Bot 設定使用新 Token
- 檢查 Bot 的活動記錄是否有異常
- 考慮建立全新的 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)