Auto-fetch Bank of Taiwan CNY exchange rates and calculate tiered pricing (base cost, 10K discount, 50K discount) using the Prairie Grasslands formula. REQUIRED: Channel configuration and Schedule setup must be completed before use. Supports Telegram, Discord, Slack, Signal, WhatsApp, iMessage, IRC, Google Chat, and webhooks.
Automatically fetch Bank of Taiwan CNY exchange rates and calculate tiered pricing.
以下規則 Agent 必須優先遵守,在任何使用者互動之前先執行檢查。
Agent 每次啟動時,必須:
config.jsonschedule.enabled 是否為 true、channels 是否非空🦞 大草原匯率計算器尚未完成設定
請選擇:
1. 快速設定
2. 自訂設定
等待使用者回覆:
1 或「快速設定」→ Agent 執行:
自動套用基本設定(第一個已啟用頻道 + 預設排程:週一至週五 09:00–17:00 每小時),
並回覆:「✅ 已套用基本設定,排程通知即將啟動。如需調整請輸入『設定匯率』。」python scripts/cny_rate.py --auto-setup
2 或「自訂設定」→ Agent 在伺服器端執行:
python scripts/cny_rate.py
並回覆:「✅ 設定精靈已啟動,請依照終端提示完成設定。」設定精靈完成後自動將排程寫入 ~/.openclaw/cron/jobs.json
當收到系統事件「執行人民幣匯率計算並發送通知」時:
config.json 的 schedule.enabled 為 true 且 channels 非空python scripts/cny_rate.py --run
使用者輸入以下任一關鍵字時,執行 python scripts/cny_rate.py:
設定匯率、匯率設定、初始化、重新設定setup、configure、init本技能會自動檢測系統中已配置的頻道,並引導您完成設定。
安裝後首次執行,技能會:
設定完成後,會詢問是否發送測試:
==================================================
🧪 設定完成!是否發送測試訊息?
==================================================
就像印表機安裝後列印測試頁一樣,
建議發送一次測試訊息確認設定正確。
發送測試訊息?(y/n): y
📤 發送測試訊息到 Telegram...
✅ 測試訊息發送成功!
測試訊息內容:
🦞 大草原匯率計算器 - 測試訊息
✅ 頻道設定:Telegram
✅ 排程設定:已啟用
這是一則測試訊息,確認設定正確。
正式匯率通知將依照排程時間發送。
測試時間:2025/03/16 12:00:00
config.jsonconfig.json 設定發送時間安裝後執行技能,會自動檢測您的 OpenClaw 配置:
==================================================
🔍 檢測到以下可用頻道:
==================================================
1. Telegram
狀態: 已啟用
備註: 需要 Chat ID
2. Discord
狀態: 已啟用
備註: 需要 Webhook URL
3. Console (僅終端輸出,不發送)
4. 取消設定
請選擇要使用的頻道 (1-4): 1
已選擇: Telegram
請輸入 Telegram Chat ID: 6462528054
✅ 已保存頻道配置: telegram
根據自動檢測結果,編輯 config.json:
{
"channels": [
{ "type": "telegram", "target": "YOUR_CHAT_ID" }
]
}
支援頻道:
| 頻道 | type | target | 環境變數 |
|---|---|---|---|
| Telegram | telegram | Chat ID | TELEGRAM_BOT_TOKEN |
| Discord | discord | Webhook URL | 無 |
| Slack | slack | Webhook URL | 無 |
| Signal | signal | 電話號碼 | OPENCLAW_GATEWAY_TOKEN |
whatsapp | 電話號碼 | OPENCLAW_GATEWAY_TOKEN | |
| iMessage | imessage | 聯絡人名稱 | OPENCLAW_GATEWAY_TOKEN |
| IRC | irc | 頻道名稱 | OPENCLAW_GATEWAY_TOKEN |
| Google Chat | googlechat | Webhook URL | 無 |
| Webhook | webhook | 自訂 URL | 無 |
編輯 config.json:
{
"schedule": {
"enabled": true,
"days_of_week": [1, 2, 3, 4, 5],
"start_time": "09:00",
"end_time": "17:00",
"interval_hours": 1,
"schedule_times": ["09:00", "10:00", "11:00", "12:00", "13:00", "14:00", "15:00", "16:00", "17:00"],
"description": "週一至週五 09:00-17:00 每小時",
"cron": "0 9-17 * * 1-5"
}
}
排程欄位說明:
| 欄位 | 說明 | 範例 |
|---|---|---|
enabled | 啟用排程 | true |
days_of_week | 執行日期(0=日, 6=六) | [1,2,3,4,5] |
start_time | 開始時間 | "09:00" |
end_time | 結束時間 | "17:00" |
interval_hours | 間隔小時 | 1, 2, 3, 4 |
schedule_times | 執行時間列表 | ["09:00", "10:00"] |
description | 描述 | 自由填寫 |
cron | Cron 表達式 | 0 9-17 * * 1-5 |
設定完成後執行:
python scripts/cny_rate.py
配置驗證通過後會詢問:
🧪 設定完成!是否發送測試訊息?
就像印表機安裝後列印測試頁一樣...
發送測試訊息?(y/n): y
{
"formula": {
"deltas": [0.05, 0.03, 0.015],
"labels": ["基礎成本", "滿萬優惠", "五萬優惠"]
},
"source": {
"name": "Bank of Taiwan",
"url": "https://rate.bot.com.tw/xrt"
},
"channels": [
{ "type": "telegram", "target": "123456789" },
{ "type": "discord", "target": "https://discord.com/api/webhooks/..." }
],
"schedule": {
"enabled": true,
"days_of_week": [1, 2, 3, 4, 5],
"start_time": "09:00",
"end_time": "17:00",
"interval_hours": 1,
"schedule_times": ["09:00", "10:00", "11:00", "12:00", "13:00", "14:00", "15:00", "16:00", "17:00"],
"description": "週一至週五 09:00-17:00 每小時",
"cron": "0 9-17 * * 1-5"
}
}
pythonscripts/cny_rate.py# 編輯 crontab
crontab -e
# 加入排程(範例:週一至週五 9-17點每小時)
0 9-17 * * 1-5 cd /path/to/skill && python scripts/cny_rate.py
{
"cny-rate-check": {
"schedule": "0 9-17 * * 1-5",
"command": "python scripts/cny_rate.py",
"cwd": "/path/to/cny-rate-calculator"
}
}
| 檔位 | 計算方式 | 預設標籤 |
|---|---|---|
| 中間價 | (買入 + 賣出) / 2 | - |
| 基礎成本 | 中間價 + 0.05 | 基礎成本 |
| 滿萬優惠 | 中間價 + 0.03 | 滿萬優惠 |
| 五萬優惠 | 中間價 + 0.015 | 五萬優惠 |
| 變數 | 適用頻道 | 說明 |
|---|---|---|
TELEGRAM_BOT_TOKEN | Telegram | Bot 憑證 |
OPENCLAW_GATEWAY_TOKEN | Signal, WhatsApp, iMessage, IRC | Gateway 憑證 |
OPENCLAW_GATEWAY_URL | Signal, WhatsApp, iMessage, IRC | Gateway 網址 |
安裝完成後,可直接透過已設定的頻道(如 Telegram)與 agent 互動管理通知頻道清單。
| 關鍵字 | 功能 |
|---|---|
加入頻道 | 查看可加入的頻道並選擇加入 |
移除頻道 | 從通知清單移除指定頻道 |
頻道設定 | 查看目前所有通知頻道狀態 |
當使用者傳送 加入頻道、移除頻道 或 頻道設定 時:
執行 python scripts/cny_rate.py --list-channels 取得 JSON:
configured:目前通知清單中的頻道available:OpenClaw 已啟用但尚未加入的頻道加入頻道 → 展示 available 編號清單,詢問選哪個:
可加入的頻道:
1. Discord
2. Slack
回覆編號或名稱選擇,回覆「取消」退出
移除頻道 → 展示 configured 編號清單,詢問選哪個
頻道設定 → 同時展示兩份清單,詢問要加入還是移除
排程執行偵測到新頻道時,會發送以下格式的通知:
📡 偵測到新啟用頻道
以下頻道可加入匯率通知清單:
1. Discord
2. Slack
回覆頻道名稱或編號即可加入
(例:Discord 或 1)
回覆「略過」忽略此提示
當使用者回覆編號(如 1)或頻道名稱(如 Discord)時:
對照通知中的清單確認選擇的頻道類型
詢問該頻道需要的目標值:
| 頻道 | 詢問內容 |
|---|---|
| Telegram | 請提供 Chat ID(純數字) |
| Discord / Slack / Google Chat | 請提供 Webhook URL |
| Signal / WhatsApp | 請提供目標電話號碼 |
| iMessage | 請提供聯絡人名稱 |
| IRC | 請提供頻道名稱 |
收到目標值後執行:
python scripts/cny_rate.py --add-channel <type> <target>
回覆確認結果,並告知下次排程將發送到新頻道
使用者回覆 略過 則不執行任何操作,回覆確認已略過。
排程執行時若偵測到 OpenClaw 有新啟用的頻道(尚未加入通知清單),自動透過現有頻道發送上述格式的提醒訊息。
cny-rate-calculator/
├── SKILL.md # 本說明文件
├── config.json # ⚠️ 必須設定(頻道+排程)
└── scripts/
├── cny_rate.py # 主程式(含自動檢測+測試訊息)
├── run.bat # Windows 啟動
└── run.sh # Linux/macOS 啟動