常見問答
我可以不用 Python 使用 discli 嗎?
可以。 discli 本身透過 pip 安裝後會安裝為 Python 套件,但 discli 可執行檔可直接使用。你不用在代理端寫 Python。
對代理端來說語言不受限制。discli serve 是跨語言協定,透過 stdin/stdout 交換 JSONL。你的代理可用 Node.js、Go、Rust、Ruby、Bash 等任意語言,只要能啟動子程序並讀寫文字流。
# 安裝(需一次安裝 Python/pip)pip install discord-cli-agent
# 任何語言都能使用,不需 Python
discli message send "#general" "Hello from Rust!"可以搭配 Fosscord、Spacebar 之類的自架 Discord 平台嗎?
不建議。 discli 使用官方 Discord API。像 Fosscord、Spacebar、Revolt、Guilded 等有各自 API 實作,未受官方支援。
若有平台宣稱相容 API,理論上可嘗試改 base URL,但這屬未測試範圍,不在正式支援內。
多個代理可共用同一 bot token 嗎?
每個 token 僅允許一個 discli serve 實例。 Discord gateway 對 bot token 只允許一個活躍 WebSocket 連線,若同時啟動兩個 discli serve,會互相重連。
但 CLI 指令可同時執行,因為它們是無狀態 REST 呼叫。你可以保留一個 discli serve,並在另一個終端機平行呼叫 discli message send。
若你需要多個獨立代理,請為每個代理建立不同 bot application 與 token。
這樣會違反 Discord 的服務條款嗎?
不會。 discli 透過官方 Discord Bot API 並使用合法 bot token。它沒有:
- 使用使用者 / selfbot token
- 擷取 Discord 客戶端畫面
- 反向工程私有協定
- 繞過速率限制
discli 在 API 合規面與一般 Discord 函式庫(discord.py、discord.js)同等。仍需遵守 Discord 開發者條款 與 開發者政策。
可以搭配 OpenAI、Claude、或本地模型嗎?
可以。 discli 的 JSONL 協定不會依賴你使用的是哪個模型。你可以使用:
- OpenAI(GPT-4、GPT-4o 等)
- Anthropic Claude(Claude 3、Claude 4 等)
- 本地模型(Llama、Mistral、Phi,透過 Ollama、llama.cpp、vLLM)
- 其他任何可讀寫 JSON 並輸出文字的模型
- 完全不用模型:只靠規則化機器人或腳本也可以
# 代理可自行決定如何處理事件event = json.loads(line_from_discli)
# 送到指定模型response = openai.chat(...) # 或response = anthropic.messages(...) # 或response = ollama.generate(...) # 或response = my_rules_engine(event) # 不一定要 AI怎麼加 embed、按鈕、選單?
CLI 與 serve 均完整支援 embed。 但互動元件(按鈕、選單、模態視窗)僅在 serve 模式可用。
CLI 端:透過旗標送出 embed:
discli message send "#announcements" "New release!" \ --embed-title "v2.1.0" \ --embed-desc "Bug fixes and performance improvements" \ --embed-color "5865F2" \ --embed-footer "Released today" \ --embed-image "https://example.com/banner.png" \ --embed-thumbnail "https://example.com/icon.png" \ --embed-author "Release Bot" \ --embed-field "Changes" "Bug fixes and perf improvements"可用 embed 旗標:--embed-title、--embed-desc、--embed-color、--embed-footer、--embed-image、--embed-thumbnail、--embed-author、--embed-field。
serve 模式:透過 embed JSON 送出完整 embed,並透過 components 送出互動元件:
- 按鈕:primary、secondary、success、danger、link
- 選單:字串、使用者、身分組、頻道選擇
- 模態表單:彈出式表單,含短文字與長文欄位
{"action": "send", "channel_id": "456", "content": "Pick:", "embed": {"title": "Choose", "color": "5865F2"}, "components": [ [{"type": "button", "label": "Yes", "style": "success", "custom_id": "yes"}]]}按鈕、選單、模態視窗都是 serve-only,不支援 CLI。詳細請看 元件與模態視窗。
我的機器人需要哪些權限?
需求視使用情境而定。以下為常見最低權限:
| 使用情境 | 需要的 Discord 權限 |
|---|---|
| 傳送訊息 | 發送訊息 |
| 讀取訊息 | 檢視頻道、檢視訊息歷史 |
| 監聽事件 | 檢視頻道、檢視訊息歷史 |
| 管理頻道 | 管理頻道(Manage Channels) |
| 成員管理 | 踢除成員、停權成員 |
| 使用 slash 指令 | 使用應用程式指令(通常預設啟用) |
盡量先用最小權限,之後再逐步擴展。最小權限原則也適用於機器人。
如何更新 discli?
使用 pip 的升級參數:
pip install --upgrade discord-cli-agent查看目前版本:
discli --versiondiscli 以語意化版本管理。次版本與修正版可向下相容;主版本更新可能有破壞性變更,通常會寫在 changelog。
可以放在 Docker 跑嗎?
可以。 discli 是標準 Python 套件,除 Python 本身外,沒有太多系統前置。最小 Dockerfile:
FROM python:3.11-slimRUN pip install discord-cli-agentENV DISCORD_BOT_TOKEN=your_token_hereCMD ["discli", "serve", "--events", "messages"]上線建議使用非 root 帳號,並在執行時透過環境變數傳 token(不要寫進映像檔):
FROM python:3.11-slimRUN pip install discord-cli-agent && \ useradd -m discliUSER discliENTRYPOINT ["discli"]docker run -e DISCORD_BOT_TOKEN=your_token my-discli-bot serve --events messages有沒有速率限制?
有,分兩層:
discli 內建限制:每 5 秒最多 5 次破壞性操作(send、delete、ban 等),用來避免代理失控並留有緩衝,唯讀操作(list、search、info)不受此限制。
Discord API 限制:不同 endpoint 不同。大多數端點約每 5 秒 5 次;少部分(如 bulk delete)更嚴格。discli 會自動對 Discord 429 做指數退避。
需要更高吞吐量時,請先閱讀 Discord 速率限制文件。