前面的開發已經完成 Discord Bot 與 Google Calendar API 的基本串接。隨著功能增加,除了確認指令能正常執行,也需要考慮 API 請求失敗、授權失效及程式碼維護等問題。
這兩天主要完成以下工作:
Discord Bot 需要透過 Google Calendar API 執行行程操作,但在實際使用時,可能遇到使用者輸入錯誤、OAuth 授權失效或 Google API 限流等情況。
因此,這一天主要針對不同錯誤建立對應的處理方式,並驗證錯誤發生後是否會影響 Bot 的後續運作。
實作重點:
/ping 與新增行程截圖 1:錯誤分類與系統復原測試

圖說:本機測試報告顯示無效日期、OAuth 授權失效與 Google API 限流等情境的處理結果,並驗證錯誤發生後仍能執行 /ping 及新增行程。
除了錯誤處理,也透過自動化測試與真實 Google 授權檢查,確認當時的程式功能與授權流程。
截圖 2:74 項自動測試與 Google 授權檢查

圖說:當時共有 74 項自動測試通過、0 項失敗,另外也完成真實 Google 授權檢查,確認授權流程可正常使用。
隨著 Discord 指令、Google OAuth 授權及 Calendar API 操作逐漸增加,如果將不同功能集中在同一個檔案,會提高後續修改與除錯的難度。
因此,這一天主要重新整理專案結構,讓不同模組負責各自的工作。
實作重點:
commands:負責處理 Discord Slash Commandsservices:負責 Google Calendar API 相關操作auth:負責 Google OAuth 授權流程utils:存放共用工具與錯誤處理邏輯index.js:精簡為 Bot 啟動、事件註冊及必要的初始化工作透過模組化,將指令處理與外部 API 操作分離,讓各個檔案的責任更加明確,也方便後續維護。
截圖 3:模組化專案結構與 index.js

圖說:將專案整理為 commands、services、auth、utils 等模組,並精簡 index.js,使其主要負責 Bot 啟動與事件註冊。
除了整理程式碼,也檢查了專案中的敏感檔案是否受到適當保護。
由於 OAuth 憑證與 Token 不應直接上傳到公開的 GitHub Repository,因此透過 .gitignore 設定排除規則,並驗證規則是否有效。
實作重點:
.env 環境變數檔案.gitignore 排除規則需要注意的是,.gitignore 可以避免符合規則且尚未被 Git 追蹤的檔案被加入版本控制,但不能證明敏感資料從未出現在 GitHub 的歷史提交紀錄中。
截圖 4:敏感檔案排除設定與開發待辦

圖說:透過 .gitignore 排除環境變數、OAuth 憑證及 Token 等敏感檔案,並驗證排除規則。畫面中的 /list、/delete 與提醒功能為當時的開發待辦,後續已完成。
Day 26~27 當時的測試結果如下:
這裡的 74 項是 Day 26~27 截圖拍攝當時的測試數量。後續補上 /list、/delete 及 Google Calendar 原生提醒等功能後,測試數量增加至 111 項,並完成真實操作驗收。
這兩天的開發重點不再是增加新功能,而是改善系統的穩定性與程式碼維護方式。
透過錯誤分類與復原測試,更清楚理解外部 API 發生錯誤時,程式應該如何處理及回覆,避免單次操作失敗影響整體系統。
模組化則讓不同功能之間的責任更加明確,未來新增指令或修改 Google Calendar API 操作時,不需要反覆調整不相關的程式碼。
另外,也透過 .gitignore 的設定與驗證,進一步了解專案版本控制時應注意的敏感資訊管理問題。
接下來將進行系統整合測試與功能優化,確認各個模組在完整操作流程中都能正常運作。