一個使用Django開發的LINE Bot,提供天氣查詢、股票追蹤與新聞整合功能。
使用者可以透過LINE查詢天氣資訊、取得新聞及追蹤個股。系統整合多個外部API與資料來源,並使用LINE Flex Message呈現資訊。
本專案使用Docker Compose整合Django、PostgreSQL與ngrok,並透過啟動腳本自動取得ngrok URL、更新LINE Webhook。因此開發時不需要另外建立Python虛擬環境、手動啟動ngrok或在每次重新啟動後手動設定Webhook
使用者可以輸入臺灣城市名稱,系統會透過中央氣象署 Open Data API取得對應的天氣資訊。
目前提供當日天氣資訊查詢。
支援的城市:
- 宜蘭縣
- 花蓮縣
- 臺東縣
- 澎湖縣
- 金門縣
- 連江縣
- 臺北市
- 新北市
- 桃園市
- 臺中市
- 臺南市
- 高雄市
- 基隆市
- 新竹縣
- 新竹市
- 苗栗縣
- 彰化縣
- 南投縣
- 雲林縣
- 嘉義縣
- 嘉義市
- 屏東縣
使用者在LINE聊天室輸入:
新聞
或:
新聞 類別 關鍵字
系統會從新聞網站中取得最新相關新聞,並透過LINE Text Message呈現。 類別: 政治,財經,社會,娛樂,體育,科技,生活,國際、健康
其中類別與欲搜尋之關鍵字可選擇不輸入。
使用者在LINE聊天室輸入:
股票 股票代碼
或:
股票股票代碼
可以透過LINE Flex Message:
- 追蹤股票
- 取消追蹤股票
- 查詢目前追蹤的股票清單
- 查看追蹤股票的相關資訊
系統使用PostgreSQL儲存使用者與股票的追蹤關係。
使用者輸入「說明」可看到本line bot相關說明。
All tests passed successfully.
✓ 37 tests passed
- Python
- Django
- LINE Messaging API / LINE Bot SDK
- PostgreSQL
- yfinance — 取得股票價格、漲跌幅等市場資訊
- Beautiful Soup — 取得新聞
- 中央氣象署 Open Data API — 取得天氣資訊
- Docker
- Docker Compose
- ngrok
- Django Test
- unittest.mock
- GitHub Actions
default.mov
Webhook Auto-Configuration Flow

將主要功能拆分為獨立Service:
- Weather
- Stock
- News
透過模組化設計降低元件之間的耦合,使各功能可以獨立開發、測試與擴充。
使用PostgreSQL設計資料模型,支援使用者與股票之間的多對多關係。
一個使用者可以追蹤多支股票,而同一支股票也可以被多個使用者追蹤。
本專案使用Docker Compose管理開發環境。以下說明專案的啟動、關閉、Database Migration及測試方式。
第一次建立Docker containers或修改以下檔案時,需要重新build:
docker-compose.ymlDockerfilerequirements.txt
執行:
docker compose up --build如果沒有修改Docker設定,可以直接執行:
docker compose updocker compose down此指令會停止並移除目前由Docker Compose建立的containers。
當Django Model有修改時,需要重新建立並套用migration。
docker compose exec django python3 manage.py makemigrationsdocker compose exec django python3 manage.py migrate執行Django Test:
docker compose exec django python3 manage.py test其中django是docker-compose.yml中Django service的名稱:
services:
django: ...如果未來將Django service名稱修改為web:
services:
web: ...則Test指令需要改成:
docker compose exec web python3 manage.py test| 用途 | 指令 |
|---|---|
| 第一次啟動 / Docker設定有修改 | docker compose up --build |
| 一般啟動 | docker compose up |
| 關閉 | docker compose down |
| 建立migration | docker compose exec django python3 manage.py makemigrations |
| 執行migration | docker compose exec django python3 manage.py migrate |
| 執行Test | docker compose exec django python3 manage.py test |






