設定
discli 採用分層式設定架構管理驗證,並以權限設定檔控管可執行的指令。本頁說明如何設定機器人 Token、管理設定檔,以及使用權限設定檔。
機器人 Token
Discord 機器人 Token 是唯一必要的設定。discli 會依下列優先順序解析 Token:
| 優先順序 | 方式 | 範例 |
|---|---|---|
| 1(最高) | --token 旗標 | discli --token YOUR_TOKEN server list |
| 2 | DISCORD_BOT_TOKEN 環境變數 | export DISCORD_BOT_TOKEN=your_token |
| 3(最低) | 設定檔 (~/.discli/config.json) | discli config set token YOUR_TOKEN |
--token 的優先權最高,其次是環境變數,最後才是已儲存的設定檔。請依你的作業流程選擇任一方式。
選項 1:設定檔(建議本機使用)
將 Token 持久化儲存,避免每次都重新輸入:
discli config set token YOUR_BOT_TOKEN已設定 Token。這會寫入 ~/.discli/config.json:
{ "token": "YOUR_BOT_TOKEN"}設定檔會以純文字儲存 Token。請確認 ~/.discli/config.json 的權限設為安全,macOS/Linux 可用:
chmod 600 ~/.discli/config.json選項 2:環境變數(建議用於 CI / 容器)
設定 DISCORD_BOT_TOKEN 環境變數:
export DISCORD_BOT_TOKEN=your_token可將這行加入 ~/.bashrc、~/.zshrc 或 shell 設定檔,讓設定跨工作階段保留。
$env:DISCORD_BOT_TOKEN = "your_token"若要永久生效,請在系統設定中將其設為系統或使用者環境變數,或使用:
[System.Environment]::SetEnvironmentVariable("DISCORD_BOT_TOKEN", "your_token", "User")docker run -e DISCORD_BOT_TOKEN=your_token my-agent或於 GitHub Actions 中設定:
env: DISCORD_BOT_TOKEN: ${{ secrets.DISCORD_BOT_TOKEN }}選項 3:逐指令旗標
單次執行時直接提供 Token:
discli --token YOUR_BOT_TOKEN server list--token 旗標必須放在子指令前面,而不是後面,因為它是 discli 全域選項。
檢視目前設定
查看目前已設定的內容:
discli config showtoken: your-bot-token為防止外洩,Token 會截斷顯示。若要看完整 JSON 輸出:
discli --json config show{ "token": "your-bot-token-here"}權限設定檔
權限設定檔會決定機器人(或代理)可執行哪些指令。這在讓 AI 代理使用 discli 時特別重要,可將其限制在安全的操作範圍內。
可用設定檔
| 設定檔 | 說明 | 適用情境 |
|---|---|---|
| full | 全部指令都可使用 | 本機開發、可信任的代理 |
| chat | 訊息、表情回應、討論串、輸入指示、DM、listen、serve | 不應有審核權限的聊天機器人 |
| readonly | 僅能列出、查詢資訊、取得、搜尋、listen | 監控、日誌、只讀代理 |
| moderation | 含審核權限的完整存取 | 需要 kick/ban 能力的審核機器人 |
設定啟用中的設定檔
權限設定檔有三種設定方式,優先順序與 Token 相同:
持久化(寫入磁碟):
discli permission set chat權限設定檔已設定為:chat(訊息、表情回應、討論串、輸入指示)這會將啟用的設定檔寫入 ~/.discli/permissions.json。
逐指令(旗標):
discli --profile readonly message list "#general"--profile 旗標可在單次呼叫中覆寫已儲存的設定檔。
透過環境變數:
export DISCLI_PROFILE=readonly此設定優先於已儲存的設定檔,但仍會被 --profile 旗標覆寫。
檢視啟用中的設定檔
discli permission show啟用的設定檔:chat說明:訊息、表情回應、討論串、僅輸入動作允許:message, reaction, thread, typing, dm, listen, serve, config, server拒絕:member kick, member ban, member unban, channel delete, role delete, role create, channel create列出所有設定檔
discli permission profiles full: 全部指令都可使用 chat: 訊息、表情回應、討論串、僅輸入動作 readonly: 只讀:list、info、get、search、listen moderation: 含審核權限的完整存取建立 AI 代理時,建議先用 readonly 或 chat,待行為穩定後再提升到 full。這符合最小權限原則,能避免誤操作造成破壞。
危險操作保護
某些指令屬於破壞性操作,執行前會要求確認:
member kickmember banmember unbanchannel deletemessage deleterole delete
執行這類指令時,discli 會跳出確認提示:
⚠ 危險操作:member kick(使用者:Alice)。是否繼續?[y/N]若要在腳本與自動化中略過提示,請加 --yes 或 -y 旗標:
discli --yes member kick "My Server" @spammer--yes 請慎用,尤其在自動化流程中。搭配嚴格的權限設定檔可降低誤操作風險。
稽核日誌
discli 會將每次指令執行寫入 ~/.discli/audit.log。可用來追蹤代理實際執行了哪些操作。
# 檢視最近的稽核紀錄discli audit show --limit 10
# JSON 輸出discli --json audit show --limit 5
# 清除日誌discli audit clear設定檔參考
~/.discli/config.json
{ "token": "YOUR_BOT_TOKEN"}~/.discli/permissions.json
{ "active_profile": "chat", "profiles": {}}profiles 欄位可自訂更多設定檔,預設內建的四個設定檔已可覆蓋大多數需求。
~/.discli/audit.log
每一列為一筆 JSON 物件的換行分隔檔,代表一筆稽核紀錄:
{"timestamp": "2026-03-15T10:32:00+00:00", "command": "message send", "args": {"channel": "general", "content": "Hello"}, "result": "ok", "user": ""}