部室の鍵を管理するボット. ボイスチャンネルを使わずに実装した.
-
GitHubからクローン:
git clone <リポジトリURL> cd Club-Key-Manager-Bot2
-
設定ファイルを作成:
cp src/settings.json.sample src/settings.json
src/settings.jsonを編集して、Discord Bot Token などを設定してください。 -
docker-compose で起動:
docker compose up -d
-
ログ確認:
docker compose logs -f
"Ready!" と表示されたら起動完了です。
# 停止
docker compose down
# 再起動
docker compose restartsrc/settings.json に以下を指定します:
- LogChannel : Discord のログチャンネル ID
- Token : Discord Bot トークン(秘密厳守)
- ModeConsole :
"true"または"false"。falseは部室鍵用、trueは操作卓用 - ReminderTimeMinutes : リマインダー間隔(分)。デフォルト:180分
- checkHour : 定時チェック時刻(時)。デフォルト:20
- checkMinute : 定時チェック時刻(分)。デフォルト:0
- 鍵の状態管理(借りる → 開ける → 閉める → 返す)
- 現在の鍵状態に応じたボタンのみ表示
- リマインダーと定時チェックメッセージにもボタンを追加
- 鍵を借りたユーザーに指定時間後に返却リマインダーを送信
- リマインダーメッセージから直接鍵操作可能
- リマインダーは設定間隔で繰り返し送信
- 毎日指定時刻に鍵が返却されているかチェック
- 未返却の場合、ユーザーにメンション付きで通知
/borrow [分]: 鍵を借りる(オプション:リマインダー開始時間を分で指定)- 例:
/borrow→ 通常の借りる - 例:
/borrow 480→ 480分後にリマインダー開始 - 既に借りてる状態での実行 → リマインダー時間を更新
- 例:
/reminder: リマインダー機能をトグル(ON ↔ OFF)/reminder-time <分>: リマインダー間隔を変更(分)
/scheduled-check: 定時チェック機能をトグル(ON ↔ OFF)/check-time <時> <分>: 定時チェック時刻を変更
/status: 現在のアラーム設定を表示/owner @ユーザー: 鍵の持ち主を変更
- Colors.Blue #3498DB 情報 (Info)
- Colors.Green #57F287 成功 (Success)
- Colors.Gold #F1C40F 警告・強調 (Warning)
- Colors.Red #ED4245 エラー (Error)
src/
├── config.ts # 設定管理
├── types.ts # 型定義
├── utils.ts # ユーティリティ関数
├── main.ts # エントリーポイント
├── discord/ # Discord関連
│ ├── client.ts # Discordクライアント初期化
│ ├── commands.ts # コマンド定義
│ └── discordUI.ts # UI要素(ボタン、プレゼンス等)
├── services/ # ビジネスロジック
│ ├── keyOperations.ts # 鍵操作ロジック
│ ├── reminderService.ts # リマインダー管理
│ └── scheduledCheck.ts # 定時チェック
└── handlers/ # インタラクションハンドラー
├── commandHandlers.ts # スラッシュコマンド処理
└── buttonHandlers.ts # ボタンインタラクション処理
- Token は絶対に Git にコミットしないでください
src/.gitignoreにsettings.jsonが登録されていますsrc/settings.json.sampleをテンプレートとして使用してください
- Token が漏洩した場合は、Discord 開発者ポータルで即座に再生成してください