目錄
專案介紹:Outlook 行事曆 Telegram 提醒機器人
這個專案是一個使用 Python 撰寫的自動化機器人,主要功能是每天早上透過 Telegram 發送 Microsoft Outlook 行事曆的行程提醒。它能幫助您無需手動查看行事曆,就像擁有一個專屬的行程祕書。
專案核心功能
機器人會自動從 Microsoft Outlook 行事曆中抓取當天的所有行程
顯示每個事件的時間(GMT+8,台北時區)、標題和地點
支援 HTML 格式的訊息排版,讓訊息更易讀
具備完整的錯誤處理和日誌記錄功能,方便追蹤問題
行程會按時間順序自動排序
支援跨平台認證和 Token 持久化,方便在不同環境使用
能夠正確處理並顯示重複性活動
能夠正確處理並顯示跨日活動
能夠正確處理並顯示全天活動
所有時間均以 GMT+8(台北時間)顯示
專案設計流程:
由於 Outlook 行事曆每次設定提醒都需要單獨設定,且每天都要打開行事曆確認行程,為了節省時間和精力,決定開發此自動化提醒機器人
選擇 Python 作為開發語言,因其易用性和豐富的套件支援
使用 Microsoft Graph API 獲取 Outlook 行事曆的行程資訊
使用 Telegram Bot API 發送訊息
使用 schedule 套件設定每天早上 6 點自動發送提醒
程式碼已優化時區轉換邏輯,確保時間顯示為 GMT+8
增加了錯誤處理和日誌記錄,以方便追蹤問題
程式碼支援 Windows 和 Linux 系統,並有各自的說明文件
-
持續優化
- 程式碼不斷更新,以確保功能穩定和效率
- 優化了事件過濾邏輯,移除冗餘的時間範圍檢查
- 修正了重複性活動和跨日活動的顯示問題
- 改進了時區轉換的邏輯
- 使用
calendarView
端點查詢事件,提供更好的事件展開支援
如何使用
pip install -r requirements.txt
-
-
設定 Microsoft Graph API (Azure)
- 前往 Azure Portal 註冊新的應用程式
- 設定應用程式平台為「桌面應用程式」,並設定重新導向 URI 為
http://localhost:53473
- 取得
CLIENT_ID
、TENANT_ID
和CLIENT_SECRET
- 設定 API 權限,選擇「Microsoft Graph」,並給予
Calendars.Read
權限
-
設定 Telegram Bot
- 在 Telegram 中搜尋 @BotFather 並創建新的機器人
- 取得
TELEGRAM_BOT_TOKEN
- 搜尋 @userinfobot 並發送訊息,取得
TELEGRAM_CHAT_ID
-
設定環境變數
- 複製
.env.example
檔案並重新命名為.env
- 在
.env
檔案中填入剛才取得的資訊
- 複製
-
-
首次執行
-
- 執行程式
python calendar_reminder.py
- 當提示選擇授權方式時,選擇選項 1
- 瀏覽器會自動開啟授權頁面,登入 Microsoft 帳號並同意授權.
- 從重定向的 URL 複製完整網址並貼回程式
- Token 會自動儲存在
token.json
檔案中
- 執行程式
-
後續執行
-
- 請確保所有環境變數都已正確設定
- 程式需要持續運行才能發送提醒,可使用工作排程器、
screen
、tmux
或部署到雲端服務 - 時區已設定為 GMT+8(台北時間)
- Token 檔案 (
token.json
) 包含敏感資訊,請妥善保管 - 首次設定時請確保選擇「桌面應用程式」作為應用程式平台類型
- Linux 系統的使用者請參考 Linux 版本說明文件
-
修改提醒時間
如果需要修改提醒時間,可以在程式碼中修改 schedule.every().day.at("06:00")
的時間設定
專案優勢
無需手動查看行事曆,節省時間
Windows 和 Linux 系統皆可使用
所有時間均以台北時區顯示
支援重複性活動、跨日活動和全天活動
提供詳細的設定步驟,方便使用者快速上手
這個專案不僅能有效提升您的時間管理效率,還能讓您不再錯過任何重要行程
文章評論