Googleカレンダーを読んで、定期的に予定を教えてくれる

@Syuji Syuji authored on 16 Apr 2023
VQCalendarAttention 次の日に実施される予定を出力するタスクでも、終日の予定を考慮する修正をしました。 1 year ago
.gitignore Discordへの通知機能を追加しました。 1 year ago
README.md READMEに、.envファイルの記載方法を追加しました。 1 year ago
README.md

VQCalendarAttention

VQCalendarAttentionは、Googleカレンダーから予定を取得し、一日前になった予定をDiscordに通知するプログラムです。Cronosによる定期実行でGoogleカレンダーを監視し、DiscordのWebhookを利用して通知を送信します。

前提条件

  • .NET 6.0 SDKがインストールされていること
  • GoogleカレンダーAPIのAPIキーと認証情報を取得済みであること
  • DiscordサーバーでWebhookを作成し、Webhook URLを取得済みであること

インストール方法

  1. リポジトリをクローンします。

    git clone https://git.omhouse.mydns.jp/git/syuji/VQCalendarAttention.git

  2. プロジェクトフォルダに移動し、必要なNuGetパッケージをインストールします。

    cd VQCalendarAttention/VQCalendarAttention dotnet restore

設定

このプロジェクトでは、いくつかの環境変数を設定する必要があります。これらの環境変数は .env ファイルに記述してください。プロジェクトのルートディレクトリに .env ファイルを作成し、以下の環境変数を設定します。

DISCORD_WEBHOOK_URL=your_discord_webhook_url
DISCORD_ROLE_ID=your_discord_role_id
CALENDAR_ID=your_calendar_id
CREDENTIALS_FILE_PATH=your_credentials_file_path
CRON_PATTERN_IMPORTANT=your_cron_pattern_important
CRON_PATTERN_NEXTDAY=your_cron_pattern_nextday

各環境変数の説明:

  • DISCORD_WEBHOOK_URL: DiscordのWebhook URLです。通知を送信するチャンネルに対応するWebhookを作成し、そのURLを指定してください。
  • DISCORD_ROLE_ID: メンションを送信するDiscordのロールIDです。メンションを送りたいロールのIDを指定してください。
  • CALENDAR_ID: GoogleカレンダーのIDです。通知を取得したいカレンダーのIDを指定してください。
  • CREDENTIALS_FILE_PATH: GoogleカレンダーAPIの認証情報(サービスアカウントキー)ファイルへのパスです。適切なパスを指定してください。
  • CRON_PATTERN_IMPORTANT: [重要]タグが付いた予定の通知を送信するタイミングを指定するCRONパターンです。
  • CRON_PATTERN_NEXTDAY: 翌日の予定の通知を送信するタイミングを指定するCRONパターンです。

.env ファイルを作成したら、プログラムを実行する前に、適切な値に置き換えてください。

実行方法

プロジェクトフォルダで以下のコマンドを実行します。

dotnet run

これにより、VQCalendarAttentionプログラムが開始され、設定したCron式に従ってGoogleカレンダーから予定を取得し、一日前になった予定をDiscordに通知します。