# Telegram 與 Discord 設定

Telegram 與 Discord 機器人的設定、token 與已授權聊天存放在哪裡。

| Key | 位置 |
|---|---|
| `telegram_enabled` / `discord_enabled` | `config.json`（bot 帳號名稱寫入 `telegram_username` / `discord_username`） |
| `TELEGRAM_TOKEN` / `DISCORD_TOKEN` | keychain（`agenvoy` service） |
| 授權的 chat ID | `~/.config/agenvoy/.telegram` 與 `~/.config/agenvoy/.discord`（每行一個 ID，於 6 位數 OTP 驗證成功後寫入） |
| 驗證碼轉發 | `config.json` 的 `admin_channel`——TUI `/config` → `Admin Channel`（v1.1.0 由 `/channel` → `admin` 移入；`/channel` 現只保留 Telegram 與 Discord 分頁）或 `POST /v1/channel/admin` 可選已授權聊天或直接指定 `tg@<id>` / `dc@<id>`。`/admin-channel` 指令已移除 |
| 接收語音訊息 | 以 `config.json` 中 `stt_model` 指定的模型轉錄（TUI 為 `/model` → `stt`）。未選任何模型時，bot 會回覆尚未設定 speech-to-text 模型而不進行轉錄 |

兩個 channel 也可透過 `POST /v1/channel/telegram` 與 `POST /v1/channel/discord` 啟用或停用，該端點儲存 token 並翻轉旗標；daemon 的設定 watcher 會重連 bot 並補上帳號名稱。平台格式規則內嵌於 channel system prompt——已無 `format_chatbot` 工具。

兩個 bot 都由 daemon 主動向外連線，主機不需要開放 inbound port、公開網域或反向代理——只要一組 bot token。這也是新增平台的判準：只有在安全性上勝過這個模型才會納入，不為擴充清單而擴充。

兩個 channel 的語音**輸出**已移除。`[SEND_VOICE:<text>]` 不再存在，回覆不會被合成語音送進對話；語音合成改由 `generate_audio` 工具負責，寫出檔案到 output 目錄，並受 `tts_model` 控管。自 v1.0.13 起該檔案預設為 opus，送往 Telegram 的 `.ogg` / `.oga` / `.opus` 附件會以語音訊息而非檔案送出 —— Discord 仍以檔案接收。
