Discord.js v14 と DisTube v5 を使用した多機能Discord Botです。
/play- 曲を再生(YouTube/Spotify対応)/search- 曲を検索して選択/queue- 再生キューを表示/skip- 現在の曲をスキップ/stop- 再生を停止/volume- 音量調整/shuffle- キューをシャッフル/autoshuffle- 自動シャッフルモード/loop- ループモード設定/nowplaying- 現在再生中の曲を表示/lyrics- 歌詞を表示/jumpto- 指定位置へジャンプ
/serverinfo- サーバー情報パネル(リアルタイム更新)/botstats- Bot統計情報/ping- 応答確認
- ミュートログ機能(VC内のミュート状態変化を記録)
- 自動退出機能(5分間操作なしで自動退出)
src/
├── index.js # エントリーポイント
├── deploy-commands.js # コマンドデプロイスクリプト
├── commands/ # スラッシュコマンド (15ファイル)
│ ├── play.js, search.js # 音楽コマンド
│ ├── serverinfo.js # 管理コマンド
│ └── ...
├── config/ # 設定
│ ├── constants.js # 定数定義
│ ├── environment.js # 環境変数
│ └── networkConfig.js # ネットワーク設定
├── core/ # コアロジック
│ ├── distube.js # DisTubeインスタンス
│ └── distubeEvents/ # イベントハンドラ
├── events/ # Discordイベント
│ └── discord/
│ ├── ready.js
│ ├── interactionCreate.js
│ └── ...
└── utils/ # ユーティリティ
├── commandWrapper.js # コマンドラッパー
├── musicState.js # 音楽状態管理
├── timers.js # タイマー管理
└── ...
- レイヤードアーキテクチャ: config → utils → core → commands/events の依存方向
- 責務の分離: 各モジュールは単一責務を持つ
- DRY原則: 共通処理は commandWrapper.js 等に集約
- Node.js 18.x 以上
- FFmpeg(音楽再生用)
- リポジトリをクローン
git clone <repository-url>
cd multifunctional-bot- 依存関係をインストール
npm install- 環境変数を設定
cp .env.example .env
# .env ファイルを編集して各値を設定- スラッシュコマンドを登録
npm run deploy- Botを起動
npm startJest を使用したユニットテストが整備されています。
# テスト実行
npm test
# カバレッジ付きでテスト実行
npm run test:coverageutils/commandWrapper.js- deferReply エラーハンドリングutils/musicState.js- 自動シャッフル状態管理
以下の環境変数をホスティングサービスで設定してください:
| 変数名 | 必須 | 説明 |
|---|---|---|
DISCORD_TOKEN |
✅ | Discord Botトークン |
DISCORD_CLIENT_ID |
✅ | Discord アプリケーションID |
DISCORD_OWNER_ID |
✅ | Bot管理者のDiscord ID |
SPOTIFY_CLIENT_ID |
Spotify API Client ID(Spotify再生用) | |
SPOTIFY_CLIENT_SECRET |
Spotify API Client Secret | |
ADMIN_ROLE_IDS |
❌ | 管理者ロールID(カンマ区切り) |
FABRIX_API_KEY |
❌ | 歌詞API用キー |
ENABLE_MUTE_LOGGING |
❌ | ミュートログ有効化(true/false) |
NODE_ENV |
❌ | 環境設定(production推奨) |
- Railway でプロジェクトを作成
- GitHubリポジトリを接続
- 環境変数を設定
- 自動デプロイが開始されます
- Render で新しい Background Worker を作成
- GitHubリポジトリを接続
- Build Command:
npm install - Start Command:
node src/index.js - 環境変数を設定
- Heroku CLI でログイン
heroku login
heroku create your-bot-name- FFmpeg Buildpack を追加
heroku buildpacks:add --index 1 https://github.com/jonathanong/heroku-buildpack-ffmpeg-latest.git- 環境変数を設定
heroku config:set DISCORD_TOKEN=your_token_here
# 他の環境変数も同様に設定- デプロイ
git push heroku main- Workerを有効化
heroku ps:scale worker=1.envとconfig.jsonにはBotトークンなどの秘密情報が入るため、Gitにコミットしないでくださいdata/managed-panels.jsonは実行時に生成される管理パネル情報です。サーバーIDやチャンネルIDを含むため、Gitにコミットしないでください.agent/はローカルの作業メモ用です。個人情報や運用情報を含む可能性があるため、Gitにコミットしないでくださいconfig.jsonはローカル開発や一部ホスティング環境のフォールバック用です。本番環境では可能な限り環境変数を使用してください- ホスティングサービスで環境変数を使えない場合は、サーバー上で直接
config.jsonを作成し、公開リポジトリには含めないでください - Discord Botトークンを誤って公開した場合は、Discord Developer Portalで直ちにトークンを再生成してください
- Spotify機能を使用する場合は Spotify Developer Dashboard でアプリを作成してください
- FFmpegが必要です。ホスティングサービスによっては別途インストールが必要です
ISC