Telegram Bot — Reasonix 遠端連接
架構
Telegram ──(Webhook)──> quotation.hsdesign.biz/api/telegram ──> D1 (telegram_messages)
Telegram ──(Polling)──> PC tg_poll.sh ──> Worker /api/telegram/hook ──> D1
↕
Reasonix 檢查 inbox
Bot 資訊
- Bot username: jakeyopen_bot(由 @BotFather 建立)
- Bot token:
8777984842:AAESH5qkyG6OW_SwF-hpgla5VK-vzh-Z9mc(硬編碼在 Worker)
- Chat ID:
5671991810(Ti Tze Czia)
- Webhook URL:
https://quotation.hsdesign.biz/api/telegram
- Polling script:
tg_poll.sh(PC 上 GitBash 執行)
API Endpoints(在 quotation-saas-worker.js)
| 路由 | 方法 | 用途 |
|---|
/api/telegram | POST | Telegram Webhook 入口 |
/api/telegram/hook | POST | PC polling script 轉發入口 |
/api/telegram/inbox | GET | Reasonix 讀取未讀訊息 |
/api/telegram/send | POST | Reasonix 回覆訊息 |
D1 Table
CREATE TABLE telegram_messages (
id INTEGER PRIMARY KEY AUTOINCREMENT,
chat_id TEXT,
user_id TEXT,
username TEXT,
text TEXT,
timestamp TEXT,
replied INTEGER DEFAULT 0
);
已知限制
- Bot token 目前硬編碼在 Worker 中
- 沒有處理 media(照片/檔案)
- 沒有 streaming reply
- Webhook + Polling 不能同時啟用(目前用 Webhook)
Code Graph — quotation-saas-worker.js
handleRequest(request)
├── /auth/* — 認證
├── /api/account — 帳號資訊
├── /api/referral/stats — 推薦碼統計
├── /api/draft — Draft 同步
├── /api/telegram — Telegram Webhook
├── /api/telegram/hook — PC polling hook
├── /api/telegram/inbox — 收件夾(需 secret)
├── /api/telegram/send — 發送回覆(需 secret)
├── /dashboard — 報價工具主介面
│ ├── fetch from GitHub
│ ├── patch gate removal
│ ├── CSS injection(金色主題)
│ ├── post script (IIFE → show app)
│ └── draft sync + totalFix scripts
├── /blog/* — Blog 系統(27篇文章)
├── /interior-designer/* — 城市 Landing Pages(25個)
├── /guide — Content Hub
├── /pricing — 定價頁
├── /markup-calculator — 計算機
├── / (landing) — Landing Page(Apple 風格)
├── SEO: /robots.txt /sitemap.xml /llms.txt
└── static: injectSEOTags()
Functions:
├── renderLandingPage() — Apple 風格 Landing Page
├── renderBlogListing(cat) — Blog 列表(類別過濾)
├── renderBlogPost(slug) — 單篇文章(6 種 Schema)
├── renderCityPage(slug) — 城市 Landing
├── renderContentHub() — Guide 頁
├── renderBlogSitemap() / renderMainSitemap()
├── renderLlmTxt()
├── getRelatedArticles() — 內部連結
├── getArticleLinks() — 上下文連結
├── draftForceSave / _S() — 前端 Draft 自動儲存
└── __acct / pre / post — Dashboard patching
Bug 修復記錄
- Dashboard 白屏:
post script 注入失敗(line 908 壞掉的 replace)。修復:刪除殘留的 patch_ref2.py 程式碼
- Sidebar total 歸零:
parseSaaS 沒回傳 total。修復:override + inject totalFix script
- 資料存儲:
body.notes 沒存入 data column。修復:POST/PUT 改存 body.notes