Schedule reminders by mentioning the Discord bot #9

Merged
colcaroli merged 1 commits from feature/discord-reminders into main 2026-08-23 14:32:25 +00:00
Owner

メンション本文にリマインド系のキーワードが含まれていたとき、LLM に
create_reminder / list_reminders / cancel_reminder の3ツールを渡し、
自然言語から日時と用件を取り出して reminders テーブルに保存する。
system メッセージに現在時刻を入れてあるので『明日』『30分後』のような
相対表現はモデル側が絶対日時に直す。扱うのは一回きりの通知のみ。

配信は APScheduler の discord_reminders ジョブ(既定30秒間隔)が担い、
Webhook ではなく Bot クライアントから登録元チャンネルへ依頼者を
メンションして送るため、専用の Webhook URL 設定は要らない。

  • 日時は他テーブルと同じく UTC で保存し、ユーザー・LLM とのやり取りは
    ローカル時刻で行って reminders.py の境界で変換する
  • 過去・REMINDER_MAX_AHEAD_DAYS より先・解釈不能な日時はツール結果として
    エラー文をモデルに返し、聞き直させる
  • 一覧・取り消しは依頼者の user_id で絞るため他人のリマインドには触れない
  • 配信に5回失敗したら notified_at を立てて諦める(チャンネル削除などで
    ポーリングのたびにエラーログを出し続けるのを防ぐ)。カウンタは
    プロセス内のみなので、再起動すればまた試す

Co-Authored-By: Claude Opus 5 noreply@anthropic.com

メンション本文にリマインド系のキーワードが含まれていたとき、LLM に create_reminder / list_reminders / cancel_reminder の3ツールを渡し、 自然言語から日時と用件を取り出して reminders テーブルに保存する。 system メッセージに現在時刻を入れてあるので『明日』『30分後』のような 相対表現はモデル側が絶対日時に直す。扱うのは一回きりの通知のみ。 配信は APScheduler の discord_reminders ジョブ(既定30秒間隔)が担い、 Webhook ではなく Bot クライアントから登録元チャンネルへ依頼者を メンションして送るため、専用の Webhook URL 設定は要らない。 - 日時は他テーブルと同じく UTC で保存し、ユーザー・LLM とのやり取りは ローカル時刻で行って reminders.py の境界で変換する - 過去・REMINDER_MAX_AHEAD_DAYS より先・解釈不能な日時はツール結果として エラー文をモデルに返し、聞き直させる - 一覧・取り消しは依頼者の user_id で絞るため他人のリマインドには触れない - 配信に5回失敗したら notified_at を立てて諦める(チャンネル削除などで ポーリングのたびにエラーログを出し続けるのを防ぐ)。カウンタは プロセス内のみなので、再起動すればまた試す Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
colcaroli added 1 commit 2026-08-23 14:32:16 +00:00
メンション本文にリマインド系のキーワードが含まれていたとき、LLM に
create_reminder / list_reminders / cancel_reminder の3ツールを渡し、
自然言語から日時と用件を取り出して reminders テーブルに保存する。
system メッセージに現在時刻を入れてあるので『明日』『30分後』のような
相対表現はモデル側が絶対日時に直す。扱うのは一回きりの通知のみ。

配信は APScheduler の discord_reminders ジョブ(既定30秒間隔)が担い、
Webhook ではなく Bot クライアントから登録元チャンネルへ依頼者を
メンションして送るため、専用の Webhook URL 設定は要らない。

- 日時は他テーブルと同じく UTC で保存し、ユーザー・LLM とのやり取りは
  ローカル時刻で行って reminders.py の境界で変換する
- 過去・REMINDER_MAX_AHEAD_DAYS より先・解釈不能な日時はツール結果として
  エラー文をモデルに返し、聞き直させる
- 一覧・取り消しは依頼者の user_id で絞るため他人のリマインドには触れない
- 配信に5回失敗したら notified_at を立てて諦める(チャンネル削除などで
  ポーリングのたびにエラーログを出し続けるのを防ぐ)。カウンタは
  プロセス内のみなので、再起動すればまた試す

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
colcaroli merged commit caeeb5e921 into main 2026-08-23 14:32:25 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: colcaroli/playchat#9