【Discord】ミーティングのリマインドbotを作りました

に公開

はじめに

友人と2人でゲーム制作をやっています。
「放置さえしなければ、いつか出来上がる」 という気長な活動で、基本的には毎週日曜朝に作業通話の時間を取って進めています。
予定があるため1週飛ばす・今週は土曜日に実施するなどを1人以上が覚えていなく、流会になることがたまにあったため、勉強がてら自分(たち)が助かるBotを作ってみました。
身内のいくつかのサーバに導入してもらい、「できること」の機能には問題なさそうだったので、宣伝がてら記事を書いてみます。

課題だったこと

  • 作業通話の予定を忘れがちだった

    • 「WEBブラウザでGoogleカレンダーを開き、次回の予定を書き込む」ができていないことがある
    • 作業通話用のサーバのチャンネルに次回予定をメモすることはあったものの、書き込むだけでPUSH型のリマインドではないためやっぱり忘れがち
  • 何が課題だったか(=前回何をやっていたか)を忘れがちだった

    • ざっくりと議事録を残したり、開発メモを残したり、チャットに残るファイルのやりとりから推察できたりはするものの、簡単に思い出せないこともたまにある
    • 日報を書いてからVC退出などはやりたくない
      • 仕事じゃないんだから!!

作ったもの

技術スタック

プラットフォーム: Cloudflare Workers + Durable Objects (サーバレス + 永続化設計)
開発言語: TypeScript
Wrangler:  v4.34.0
npm: v10.9.0
Node.js: v22.12.0

できること

  • /set mtg YYYY/MM/DD HH:MM: 会議リマインダーを設定

    • そのコマンドが実行されたチャンネルに対して開始10分前と開始時刻に2回通知
    • todoが設定されている場合は合わせて出力
  • /set todo <text>: ユーザーごとに1件のTODOメモを保存

  • /get mtg: 次回ミーティングを参照

  • /get todo: TODO一覧を参照

  • /clear mtg: ミーティング予定を削除

  • /clear todo: すべてのTODOを削除

  • /hello: 使い方表示

  • /debug: レイテンシやトレースIDなどのデバッグ情報取得

  • 上記のスラッシュコマンドはすべてflags: 64(コマンド実行者にのみ見える返信)で応答します。

今後の展望

  • 今のところはn=1(自分)がほしいものを作ったにすぎないので、まずは以下の実装
    • 言語切替(日本語)
    • タイムゾーン設定
    • TODOの期日設定機能
    • 任意の時間前リマインド
    • ミーティングの繰り返し設定
    • 任意のロール・ユーザーを指定してのメンション
  • 宣伝用のstaticなWEBサイトを作成してみる
  • 身内中心に使ってみてもらい、フィードバック(とコントリビュートに興味がある人)を集める

Discussion