設定

discli 採用分層式設定架構管理驗證,並以權限設定檔控管可執行的指令。本頁說明如何設定機器人 Token、管理設定檔,以及使用權限設定檔。

機器人 Token

Discord 機器人 Token 是唯一必要的設定。discli 會依下列優先順序解析 Token:

優先順序方式範例
1(最高)--token 旗標discli --token YOUR_TOKEN server list
2DISCORD_BOT_TOKEN 環境變數export DISCORD_BOT_TOKEN=your_token
3(最低)設定檔 (~/.discli/config.json)discli config set token YOUR_TOKEN

--token 的優先權最高,其次是環境變數,最後才是已儲存的設定檔。請依你的作業流程選擇任一方式。

選項 1:設定檔(建議本機使用)

將 Token 持久化儲存,避免每次都重新輸入:

Terminal window
discli config set token YOUR_BOT_TOKEN
已設定 Token。

這會寫入 ~/.discli/config.json

{
"token": "YOUR_BOT_TOKEN"
}
Warning

設定檔會以純文字儲存 Token。請確認 ~/.discli/config.json 的權限設為安全,macOS/Linux 可用:

Terminal window
chmod 600 ~/.discli/config.json

選項 2:環境變數(建議用於 CI / 容器)

設定 DISCORD_BOT_TOKEN 環境變數:

Terminal window
export DISCORD_BOT_TOKEN=your_token

可將這行加入 ~/.bashrc~/.zshrc 或 shell 設定檔,讓設定跨工作階段保留。

Terminal window
$env:DISCORD_BOT_TOKEN = "your_token"

若要永久生效,請在系統設定中將其設為系統或使用者環境變數,或使用:

Terminal window
[System.Environment]::SetEnvironmentVariable("DISCORD_BOT_TOKEN", "your_token", "User")
Terminal window
docker run -e DISCORD_BOT_TOKEN=your_token my-agent

或於 GitHub Actions 中設定:

env:
DISCORD_BOT_TOKEN: ${{ secrets.DISCORD_BOT_TOKEN }}

選項 3:逐指令旗標

單次執行時直接提供 Token:

Terminal window
discli --token YOUR_BOT_TOKEN server list
Note

--token 旗標必須放在子指令前面,而不是後面,因為它是 discli 全域選項。

檢視目前設定

查看目前已設定的內容:

Terminal window
discli config show
token: your-bot-token

為防止外洩,Token 會截斷顯示。若要看完整 JSON 輸出:

Terminal window
discli --json config show
{
"token": "your-bot-token-here"
}

權限設定檔

權限設定檔會決定機器人(或代理)可執行哪些指令。這在讓 AI 代理使用 discli 時特別重要,可將其限制在安全的操作範圍內。

可用設定檔

設定檔說明適用情境
full全部指令都可使用本機開發、可信任的代理
chat訊息、表情回應、討論串、輸入指示、DM、listen、serve不應有審核權限的聊天機器人
readonly僅能列出、查詢資訊、取得、搜尋、listen監控、日誌、只讀代理
moderation含審核權限的完整存取需要 kick/ban 能力的審核機器人

設定啟用中的設定檔

權限設定檔有三種設定方式,優先順序與 Token 相同:

持久化(寫入磁碟):

Terminal window
discli permission set chat
權限設定檔已設定為:chat(訊息、表情回應、討論串、輸入指示)

這會將啟用的設定檔寫入 ~/.discli/permissions.json

逐指令(旗標):

Terminal window
discli --profile readonly message list "#general"

--profile 旗標可在單次呼叫中覆寫已儲存的設定檔。

透過環境變數:

Terminal window
export DISCLI_PROFILE=readonly

此設定優先於已儲存的設定檔,但仍會被 --profile 旗標覆寫。

檢視啟用中的設定檔

Terminal window
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

列出所有設定檔

Terminal window
discli permission profiles
full: 全部指令都可使用
chat: 訊息、表情回應、討論串、僅輸入動作
readonly: 只讀:list、info、get、search、listen
moderation: 含審核權限的完整存取
Tip

建立 AI 代理時,建議先用 readonlychat,待行為穩定後再提升到 full。這符合最小權限原則,能避免誤操作造成破壞。

危險操作保護

某些指令屬於破壞性操作,執行前會要求確認:

  • member kick
  • member ban
  • member unban
  • channel delete
  • message delete
  • role delete

執行這類指令時,discli 會跳出確認提示:

⚠ 危險操作:member kick(使用者:Alice)。是否繼續?[y/N]

若要在腳本與自動化中略過提示,請加 --yes-y 旗標:

Terminal window
discli --yes member kick "My Server" @spammer
Warning

--yes 請慎用,尤其在自動化流程中。搭配嚴格的權限設定檔可降低誤操作風險。

稽核日誌

discli 會將每次指令執行寫入 ~/.discli/audit.log。可用來追蹤代理實際執行了哪些操作。

Terminal window
# 檢視最近的稽核紀錄
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": ""}

後續步驟