Discord サーバー内で簡単に日程調整ができるボットです。調整さんライクな機能を Discord 内で完結させることができます。
- 📝 シンプルな日程調整作成 - モーダルフォームで直感的に作成
- 🗳️ ○△× の 3 段階評価 - わかりやすい回答システム
- 📊 リアルタイム集計 - 回答状況を即座に反映
- ⏰ 柔軟なリマインダー - 締切前に自動でお知らせ(3d, 1d, 8h, 30m等)
こちらのリンクからDiscordサーバーにボットを追加してください。
/chouseichan
- 新しい日程調整を作成
/chouseichan
コマンドを実行- フォームに以下を入力:
- タイトル(必須)
- 説明(任意)
- 日程候補(改行区切り)
- 締切日時(任意、リマインダー設定可能)
- 作成されたメッセージの「回答する」ボタンから投票
- 「状況を見る」ボタンで集計結果を確認
- Node.js (v18 以上)
- Cloudflare アカウント
- Discord アプリケーション
- リポジトリをクローン
git clone https://github.com/retca/discord-choseisan.git
cd discord-choseisan
- 依存関係をインストール
npm install
- 環境変数を設定
環境変数とDiscordアプリケーションの設定が必要です:
# Discordアプリケーションの設定(wrangler secret使用)
wrangler secret put DISCORD_APPLICATION_ID
wrangler secret put DISCORD_PUBLIC_KEY
wrangler secret put DISCORD_TOKEN
- wrangler.toml の設定
wrangler.toml
ファイルを編集してD1データベース設定を更新:
name = "discord-choseisan"
main = "src/index.ts"
compatibility_date = "2024-12-01"
[[d1_databases]]
binding = "DB"
database_name = "discord-choseisan-db"
database_id = "YOUR_DATABASE_ID_HERE" # 次のステップで作成されるIDを設定
migrations_dir = "migrations"
migrations_table = "d1_migrations"
- D1 データベースを作成
wrangler d1 create discord-choseisan-db
# 出力されるdatabase_idをwrangler.tomlに設定してください
- マイグレーションを実行
# 新しいマイグレーションコマンドを使用(本番環境)
npm run db:migrate:remote
# または手動で実行
wrangler d1 migrations apply discord-choseisan-db
- Cloudflare Queuesを作成(推奨:非同期処理の最適化)
# メッセージ更新用のQueueを作成
wrangler queues create message-update-queue
wrangler queues create message-update-dlq
# 締切リマインダー用のQueueを作成
wrangler queues create deadline-reminder-queue
wrangler queues create deadline-reminder-dlq
詳細な設定方法は docs/QUEUES_DEPLOYMENT.md を参照してください。
- デプロイ
npm run deploy
- Discord コマンドを登録
npm run register
詳細なセットアップガイドは docs/DEPLOY.md を参照してください。
# 新しいマイグレーションファイルを作成
npm run db:migrate:create
# 本番環境(リモート)にマイグレーションを適用
npm run db:migrate:remote
# ローカル環境にマイグレーションを適用
npm run db:migrate:local
# 未適用のマイグレーションを確認
npm run db:migrate:list
# マイグレーション状態を確認
npm run db:status
# データベースシェルでクエリを実行
npm run db:shell -- --command="SELECT COUNT(*) FROM schedules"
必要な環境変数:
DISCORD_APPLICATION_ID
- Discord アプリケーション IDDISCORD_PUBLIC_KEY
- Discord アプリケーション公開キーDISCORD_TOKEN
- Discord ボットトークン
これらは wrangler secret put
コマンドで設定します。
- ランタイム: Cloudflare Workers (エッジコンピューティング)
- 言語: TypeScript (strict mode)
- アーキテクチャ: Clean Architecture (Onion Architecture)
- データベース: Cloudflare D1 (SQLite)
- キュー: Cloudflare Queues (メッセージ更新・締切リマインダーの最適化)
- テスト: Vitest (473テスト - 100%パス、4テストスキップ)
- コード品質: Biome
詳細なアーキテクチャについては docs/ARCHITECTURE.md を参照してください。
- アーキテクチャ - システム設計の詳細
- デプロイガイド - 詳細なセットアップ手順
- Queuesデプロイガイド - Cloudflare Queuesの設定と運用
- 開発者向けガイド - AI アシスタント向けの開発ガイド
- 貢献ガイド - コントリビューション方法
- スケーラビリティ - パフォーマンスとスケールの詳細
プルリクエストや Issue の作成を歓迎します!詳しくは CONTRIBUTING.md をご覧ください。
非OSSライセンス(Custom License - Non-OSS) - 詳細は LICENSE ファイルを参照してください。
このプロジェクトは現在、個人での学習・参考用途のみ許可されています。商用利用や再配布は禁止されています。
このプロジェクトは以下の素晴らしいツール・サービスを使用しています:
Made with ❤️ by the Discord 調整ちゃん team