台科大桌遊社 LINE Bot
這是一個專為台科大桌遊社開發的 LINE Bot,提供社團成員桌遊查詢、借還、推薦等功能。透過 LINE 聊天機器人,社員可以輕鬆管理桌遊相關事務,並參與社團活動。
- 註冊: 社員透過入社序號完成註冊
- 手動註冊: 手動輸入個人資料進行註冊
- 簽到: 社課簽到功能,影響期末抽獎機率
- 找桌遊: 透過多種條件搜尋桌遊(需指定搜尋條件)
- 借桌遊: 使用桌遊編號借用桌遊(限已註冊社員)
- 還桌遊: 使用桌遊編號歸還桌遊(限已註冊社員)
- 推薦: 查看社員推薦的桌遊資訊
- 熱門桌遊: 瀏覽最受歡迎的桌遊排行
- 我覺得好好玩: 為玩過的桌遊留下評價(限已註冊社員)
- 建議桌遊: 向社團推薦新桌遊(限已註冊社員)
- on: 開啟特定功能
- off: 關閉特定功能
- 重置: 清除個人使用狀態,重新開始對話流程
- Node.js + TypeScript: 主要開發語言
- Express.js: Web 框架
- LINE Bot SDK: LINE 聊天機器人開發套件
- Google Sheets API: 資料儲存與管理
- Vercel: 部署平台
BGC-Bot/
├── src/
│ ├── app.ts # 主應用程式
│ ├── server.ts # 伺服器啟動
│ ├── configs/ # 設定檔
│ │ ├── dotenv.ts # 環境變數設定
│ │ ├── googleapis.ts # Google API 設定
│ │ └── line.ts # LINE Bot 設定
│ ├── controllers/ # 控制器
│ │ ├── assets.ts # 資產管理
│ │ └── webhook.ts # Webhook 處理
│ ├── libs/ # 核心功能模組
│ │ ├── dialog.ts # 對話處理
│ │ ├── index.ts # 索引
│ │ ├── keywords.ts # 關鍵字處理
│ │ ├── sheets.ts # 試算表處理
│ │ └── statusFeatures.ts # 狀態功能
│ ├── middlewares/ # 中介軟體
│ │ ├── authorzation.ts # 授權驗證
│ │ └── line.ts # LINE 驗證
│ ├── routers/ # 路由
│ │ ├── assets.ts # 資產路由
│ │ └── webhook.ts # Webhook 路由
│ ├── types/ # TypeScript 型別定義
│ │ ├── custom.ts # 自定義型別
│ │ ├── line.ts # LINE 相關型別
│ │ ├── sheets.ts # 試算表型別
│ │ └── user.ts # 使用者型別
│ └── utils/ # 工具函式
│ ├── custom.ts # 自定義工具
│ └── sheets.ts # 試算表工具
├── image/ # 圖片資源
├── package.json # 套件管理
├── tsconfig.json # TypeScript 設定
├── vercel.json # Vercel 部署設定
└── eslint.config.mjs # ESLint 設定
- Node.js 16.x 或更高版本
- npm 或 yarn 套件管理器
-
複製專案
git clone https://github.com/fanyuuu2006/NTUST-BoardGameClub-Bot.git cd NTUST-BoardGameClub-Bot
-
安裝依賴
npm install
-
設定環境變數
建立
.env
檔案並設定以下變數:# LINE Bot 設定 LINE_CHANNEL_ACCESS_TOKEN=your_line_channel_access_token LINE_CHANNEL_SECRET=your_line_channel_secret # Google Sheets API 設定 GOOGLE_SERVICE_ACCOUNT_EMAIL=your_google_service_account_email GOOGLE_PRIVATE_KEY=your_google_private_key # 其他設定 PORT=3000
-
啟動開發伺服器
npm run dev
-
生產環境啟動
npm start
# 開發模式啟動
npm run dev
# 生產環境啟動
npm start
# 程式碼檢查
npm run lint
# 自動修正程式碼格式
npm run lint:fix
# 執行測試
npm test
POST /webhook
- LINE Bot webhook 接收訊息
GET /assets
- 取得所有桌遊清單GET /assets/search
- 搜尋桌遊GET /assets/:id
- 取得特定桌遊資訊
- 未註冊用戶: 僅能使用註冊功能
- 已註冊社員: 可使用所有桌遊借還功能
- 管理員: 擁有系統管理權限
- 公開功能: 幫助、註冊、手動註冊、找桌遊、推薦、熱門桌遊
- 社員功能: 簽到、借桌遊、還桌遊、建議桌遊、我覺得好好玩
- 管理功能: on/off 系統控制(需特殊權限)
- 加入 LINE Bot 好友
- 註冊社員: 輸入「註冊」開始註冊流程,或使用「手動註冊」
- 查詢桌遊: 輸入「找桌遊」後選擇搜尋條件,再輸入關鍵字
- 借用桌遊: 輸入「借桌遊」後提供桌遊編號(盒子上的編號)
- 歸還桌遊: 輸入「還桌遊」後提供桌遊編號
- 社課簽到: 輸入「簽到」參與社課簽到
- 查看推薦: 輸入「推薦」查看推薦桌遊或「熱門桌遊」查看排行
- 桌遊評價: 玩完桌遊後輸入「我覺得好好玩」留下評價
本專案使用 Vercel 進行部署:
- 連接 GitHub: 將專案推送到 GitHub
- 部署到 Vercel: 連接 Vercel 並自動部署
- 設定環境變數: 在 Vercel 控制台設定環境變數
- 設定 Webhook: 在 LINE Developer Console 設定 Webhook URL
歡迎提交 Pull Request 或回報 Issue!
- Fork 本專案
- 建立功能分支 (
git checkout -b feature/AmazingFeature
) - 提交變更 (
git commit -m 'Add some AmazingFeature'
) - 推送到分支 (
git push origin feature/AmazingFeature
) - 開啟 Pull Request
本專案採用 ISC 授權條款 - 詳見 LICENSE 檔案
⭐ 如果這個專案對你有幫助,歡迎給個星星!