iT邦幫忙

0

Day 26~27|Discord × Google Calendar Bot:錯誤處理強化與程式碼模組化

  • 分享至 

  • xImage
  •  

一、實作目標

前面的開發已經完成 Discord Bot 與 Google Calendar API 的基本串接。隨著功能增加,除了確認指令能正常執行,也需要考慮 API 請求失敗、授權失效及程式碼維護等問題。

這兩天主要完成以下工作:

  • Day 26:強化錯誤分類與處理機制,驗證系統在發生錯誤後能否繼續運作
  • Day 27:重新整理程式碼結構,將不同功能拆分成獨立模組,並檢查敏感檔案的排除設定

二、實作過程

Day 26:錯誤處理強化

Discord Bot 需要透過 Google Calendar API 執行行程操作,但在實際使用時,可能遇到使用者輸入錯誤、OAuth 授權失效或 Google API 限流等情況。

因此,這一天主要針對不同錯誤建立對應的處理方式,並驗證錯誤發生後是否會影響 Bot 的後續運作。

實作重點:

  1. 區分無效日期、OAuth 授權失效及 Google API 限流等不同錯誤
  2. 依照錯誤類型提供適當的回覆訊息
  3. 使用錯誤處理機制避免單次請求失敗影響其他指令
  4. 測試發生錯誤後,Bot 是否仍能執行 /ping 與新增行程
  5. 透過本機測試報告確認不同情境的處理結果

截圖 1:錯誤分類與系統復原測試

錯誤分類與系統復原測試

圖說:本機測試報告顯示無效日期、OAuth 授權失效與 Google API 限流等情境的處理結果,並驗證錯誤發生後仍能執行 /ping 及新增行程。

除了錯誤處理,也透過自動化測試與真實 Google 授權檢查,確認當時的程式功能與授權流程。

截圖 2:74 項自動測試與 Google 授權檢查

74 項自動測試與 Google 授權檢查

圖說:當時共有 74 項自動測試通過、0 項失敗,另外也完成真實 Google 授權檢查,確認授權流程可正常使用。

Day 27:程式碼模組化

隨著 Discord 指令、Google OAuth 授權及 Calendar API 操作逐漸增加,如果將不同功能集中在同一個檔案,會提高後續修改與除錯的難度。

因此,這一天主要重新整理專案結構,讓不同模組負責各自的工作。

實作重點:

  1. commands:負責處理 Discord Slash Commands
  2. services:負責 Google Calendar API 相關操作
  3. auth:負責 Google OAuth 授權流程
  4. utils:存放共用工具與錯誤處理邏輯
  5. index.js:精簡為 Bot 啟動、事件註冊及必要的初始化工作

透過模組化,將指令處理與外部 API 操作分離,讓各個檔案的責任更加明確,也方便後續維護。

截圖 3:模組化專案結構與 index.js

模組化專案結構與 index.js

圖說:將專案整理為 commands、services、auth、utils 等模組,並精簡 index.js,使其主要負責 Bot 啟動與事件註冊。

除了整理程式碼,也檢查了專案中的敏感檔案是否受到適當保護。

由於 OAuth 憑證與 Token 不應直接上傳到公開的 GitHub Repository,因此透過 .gitignore 設定排除規則,並驗證規則是否有效。

實作重點:

  1. 排除 .env 環境變數檔案
  2. 排除 Google OAuth credentials 憑證檔案
  3. 排除儲存授權資訊的 token 檔案
  4. 驗證 .gitignore 排除規則
  5. 記錄當時尚未完成的功能,作為後續開發依據

需要注意的是,.gitignore 可以避免符合規則且尚未被 Git 追蹤的檔案被加入版本控制,但不能證明敏感資料從未出現在 GitHub 的歷史提交紀錄中。

截圖 4:敏感檔案排除設定與開發待辦

敏感檔案排除設定與開發待辦

圖說:透過 .gitignore 排除環境變數、OAuth 憑證及 Token 等敏感檔案,並驗證排除規則。畫面中的 /list、/delete 與提醒功能為當時的開發待辦,後續已完成。

三、測試與驗收

Day 26~27 當時的測試結果如下:

  • 74 項自動化測試通過
  • 0 項測試失敗
  • 真實 Google 授權檢查成功
  • 完成不同錯誤類型的處理與復原測試
  • 完成專案模組化整理
  • 完成 .gitignore 規則驗證

這裡的 74 項是 Day 26~27 截圖拍攝當時的測試數量。後續補上 /list、/delete 及 Google Calendar 原生提醒等功能後,測試數量增加至 111 項,並完成真實操作驗收。

四、學習心得

這兩天的開發重點不再是增加新功能,而是改善系統的穩定性與程式碼維護方式。

透過錯誤分類與復原測試,更清楚理解外部 API 發生錯誤時,程式應該如何處理及回覆,避免單次操作失敗影響整體系統。

模組化則讓不同功能之間的責任更加明確,未來新增指令或修改 Google Calendar API 操作時,不需要反覆調整不相關的程式碼。

另外,也透過 .gitignore 的設定與驗證,進一步了解專案版本控制時應注意的敏感資訊管理問題。

接下來將進行系統整合測試與功能優化,確認各個模組在完整操作流程中都能正常運作。


*提醒邦友,使用第三方服務/API 時,請務必評估資安風險與隱私保護
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言