Skip to content

Repository files navigation

mylinebot

一個使用Django開發的LINE Bot,提供天氣查詢、股票追蹤與財經新聞整合功能。

使用者可以透過LINE查詢天氣資訊、取得財經新聞及追蹤個股。系統整合多個外部API與資料來源,並使用LINE Flex Message呈現資訊。

本專案使用Docker Compose整合Django、PostgreSQL與ngrok,並透過啟動腳本自動取得ngrok URL、更新LINE Webhook。因此開發時不需要另外建立Python虛擬環境、手動啟動 ngrok或在每次重新啟動後手動設定Webhook


Features

1. 天氣查詢

使用者可以輸入臺灣城市名稱,系統會透過中央氣象署 Open Data API取得對應的天氣資訊。

目前提供當日天氣資訊查詢。

支援的城市:

  • 宜蘭縣
  • 花蓮縣
  • 臺東縣
  • 澎湖縣
  • 金門縣
  • 連江縣
  • 臺北市
  • 新北市
  • 桃園市
  • 臺中市
  • 臺南市
  • 高雄市
  • 基隆市
  • 新竹縣
  • 新竹市
  • 苗栗縣
  • 彰化縣
  • 南投縣
  • 雲林縣
  • 嘉義縣
  • 嘉義市
  • 屏東縣

2. 財經新聞

使用者在LINE聊天室輸入:

新聞

或:

news

系統會爬取財經新聞網站,取得最新的5筆財經新聞,並透過LINE Flex Message呈現。

3. 股票追蹤

使用者可以透過LINE Flex Message:

  • 追蹤股票
  • 取消追蹤股票
  • 查詢目前追蹤的股票清單
  • 查看追蹤股票的相關資訊

系統使用PostgreSQL儲存使用者與股票的追蹤關係。


Tech Stack

  • Django
  • LINE Bot SDK
  • PostgreSQL
  • Selenium
  • Docker
  • ngrok

System Architecture

機器人回覆

image image image image image

Container Diagram

image

ER Diagram

image

Development Automation

Webhook Auto-Configuration Flow image


Design

Modular Design

將主要功能拆分為獨立Service:

  • Weather
  • Stock
  • Crawler

透過模組化設計降低元件之間的耦合,使各功能可以獨立開發、測試與擴充。

Database Design

使用PostgreSQL設計資料模型,支援使用者與股票之間的多對多關係。

一個使用者可以追蹤多支股票,而同一支股票也可以被多個使用者追蹤。


Development

本專案使用Docker Compose管理開發環境。以下說明專案的啟動、關閉、Database Migration及測試方式。

啟動專案

第一次啟動或修改Docker設定

第一次建立Docker containers或修改以下檔案時,需要重新build:

  • docker-compose.yml
  • Dockerfile
  • requirements.txt

執行:

docker compose up --build

一般啟動

如果沒有修改Docker設定,可以直接執行:

docker compose up

關閉專案

docker compose down

此指令會停止並移除目前由Docker Compose建立的containers。


Database Migration

當Django Model有修改時,需要重新建立並套用migration。

建立migration

docker compose exec django python3 manage.py makemigrations

執行migration

docker compose exec django python3 manage.py migrate

也可以依序執行:

docker compose exec django python3 manage.py makemigrations
docker compose exec django python3 manage.py migrate

Testing

執行Django Test:

docker compose exec django python3 manage.py test

其中djangodocker-compose.yml中Django service的名稱:

services:
  django: ...

如果未來將Django service名稱修改為web

services:
  web: ...

則Test指令需要改成:

docker compose exec web python3 manage.py test

Common Commands

用途 指令
第一次啟動 / 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

References

About

Line機器人,個人side-project,可查詢臺灣城市天氣及財經新聞爬蟲

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Used by

Contributors

Languages