本 repo 目前為空(只有
.gitkeep),未發現既有 OpenClaw / Telegram Bot 原始碼與設定檔,因此以下「目前架構」為你提供需求的現況推定,OpenClaw API endpoint 需人工確認。
- 在此 repo 未找到任何 OpenClaw server code 或 OpenAPI 定義。
- 已先做
OpenClaw adapter(app/openclaw_client.py),以OPENCLAW_CHAT_ENDPOINT明確指定 endpoint。 - TODO(必要人工確認):OpenClaw 實際 API path、auth header、request/response schema、max_tokens 參數名稱。
- 此 repo 未找到 Telegram bot 邏輯與 webhook/polling 實作。
- 目前 middleware 直接提供
POST /telegram/webhook作為接管入口。
- 理論上可行:將 Telegram webhook 轉向本 middleware,並清空/停用 OpenClaw 內建 Telegram channel token。
- 需在 OpenClaw 實際部署環境中執行停用(本 repo 無相關設定檔可改)。
- 框架:FastAPI + Uvicorn。
- 設定:
pydantic-settings讀取.env。 - 啟動:
uvicorn app.main:app --host 0.0.0.0 --port 8000。 - DB:SQLite
quota.db(可用QUOTA_DB_PATH改路徑)。
Telegram Bot -> OpenClaw -> AWS Bedrock
Telegram Bot -> Guardrail Middleware -> OpenClaw -> AWS Bedrock
- 以此 repo root 作為 middleware 專案根目錄。
- 核心程式在
app/。
- Endpoint:
POST /telegram/webhook - 解析
update_id,message.chat.id,message.from.id,message.text - 非文字直接回覆:「目前只支援文字訊息」
- 由
app/openclaw_client.py封裝。 - 使用:
OPENCLAW_BASE_URL,OPENCLAW_API_KEY,OPENCLAW_CHAT_ENDPOINT。 - 送出 payload 含
max_tokens(預設 1000)。 - 若 OpenClaw 真實 API 不相容,保留 TODO adapter 待人工映射。
- 預設
./quota.db(與 app 同主機本地磁碟)。 - 建議 Lightsail 用固定路徑,如
/opt/guardrail-middleware/data/quota.db。
APP_HOST=0.0.0.0APP_PORT=8000APP_TIMEZONE=UTC(本專案採 UTC,date_key=YYYY-MM-DD)TELEGRAM_BOT_TOKEN=TELEGRAM_ALLOWED_USER_IDS=123456,789012DAILY_REQUEST_LIMIT=20GLOBAL_DAILY_REQUEST_LIMIT=200OPENCLAW_BASE_URL=OPENCLAW_API_KEY=OPENCLAW_CHAT_ENDPOINT=OPENCLAW_MAX_TOKENS=1000OPENCLAW_TIMEOUT_SECONDS=60QUOTA_DB_PATH=./quota.db
- 把此 repo 放到 Lightsail Ubuntu。
- 建立 Python venv 並安裝依賴。
- 設定
.env。 - 以 systemd 常駐啟動 Uvicorn(同機部署,不新增雲服務)。
- 將 Telegram webhook 指向
https://YOUR_DOMAIN/telegram/webhook。
- 刪除 Telegram webhook(或改回 OpenClaw endpoint)。
- 在 OpenClaw 重新啟用原 Telegram channel token。
- 停止 middleware systemd service。
APP_HOST=0.0.0.0
APP_PORT=8000
APP_TIMEZONE=UTC
TELEGRAM_BOT_TOKEN=xxx
TELEGRAM_ALLOWED_USER_IDS=123456,789012
DAILY_REQUEST_LIMIT=20
GLOBAL_DAILY_REQUEST_LIMIT=200
OPENCLAW_BASE_URL=https://openclaw.internal
OPENCLAW_API_KEY=xxx
OPENCLAW_CHAT_ENDPOINT=/api/chat
OPENCLAW_MAX_TOKENS=1000
OPENCLAW_TIMEOUT_SECONDS=60
QUOTA_DB_PATH=./quota.dbpython -m venv .venv
source .venv/bin/activate
pip install -e .
uvicorn app.main:app --host 0.0.0.0 --port 8000設定 webhook:
curl "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/setWebhook?url=https://YOUR_DOMAIN/telegram/webhook"查看 webhook:
curl "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/getWebhookInfo"刪除 webhook:
curl "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/deleteWebhook"- 將 OpenClaw 原本 Telegram channel token 清空或 disable。
- 確保 Telegram webhook 僅指向 middleware。
sqlite3 quota.db ".tables"
sqlite3 quota.db "SELECT date_key, telegram_user_id, request_count FROM daily_user_usage;"
sqlite3 quota.db "SELECT date_key, request_count FROM daily_global_usage;"
sqlite3 quota.db "SELECT id, date_key, telegram_user_id, status, reason FROM usage_logs ORDER BY id DESC LIMIT 20;"sqlite3 quota.db "DELETE FROM daily_user_usage WHERE date_key='2026-04-27';"
sqlite3 quota.db "DELETE FROM daily_global_usage WHERE date_key='2026-04-27';"/etc/systemd/system/guardrail-middleware.service
[Unit]
Description=Guardrail Middleware
After=network.target
[Service]
User=ubuntu
WorkingDirectory=/opt/guardrail-middleware
EnvironmentFile=/opt/guardrail-middleware/.env
ExecStart=/opt/guardrail-middleware/.venv/bin/uvicorn app.main:app --host 0.0.0.0 --port 8000
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable --now guardrail-middleware
sudo systemctl status guardrail-middleware