こんにちは、なりかくんと申します。
この記事はなりかくん Advent Calender 2023の22日目の記事です。
最近、YouTubeを再生できるDiscord 音楽Botがほぼ無くなってきましたよね。そこで、自分でBotをホストして自分専用音楽Discord Botを作っていこうと思います。
VPSを使う
今回は、24時間使えるようにVPSを使って音楽Botをホストしていきます。使うVPSは、私一押しVPSである「ConoHa VPS」を使います。
今回は、一人(一つのサーバー)だけで使う予定なのでUbuntu 22.04の2C1Gで作っていきます。
今回使うプログラム
今回は、GitHub上で見つけた1.7k Star ・ 2k Forksを獲得しているOSSのEvoBotというのを使っていこうと思います。
このBotを選んだ理由は、YouTubeに対応している点と日本語に対応している点、構築が簡単な点等です。
セットアップをしていく
VPSが構築出来たら、Tera TermなどでサーバーにSSH接続します。(rootではダメだろっ!っていう意見は受け付けないので、ダメだと感じた方はしっかり別ユーザーを作ってやってください。)
接続したら、Node.jsと常時起動するためのpm2をインストールします。
この二つのインストールは、以前私が紹介したこのコードで一発インストールします。
curl -sSL https://gist.githubusercontent.com/narikakun/d50ba6efd739a1fb3d08e46fa0b0077b/raw/d94cff02e57523839b78a1cff760044d077200db/install-node-lts-pm2.sh | sh
v20.xx.xxと出てきたらインストール完了です!
Node.jsとpm2をインストール出来たら、EvoBotをクローンします。
git clone https://github.com/eritislami/evobot.git
クローン出来たら、evobotのディレクトリに移動します。
cd evobot
移動したら、ライブラリをインストールします。
npm install
設定する
ここでは事前にDiscord BotのToken取得とメッセージインテントを有効にしていることを前提に話を進めます。
Discord Botの設定はこちらを参考にしてみてください。
Bot作成方法
インテント有効方法(記事の一部にあります。)
まずサーバー上でイグザンプル設定ファイル config.json.example を本物設定ファイルとしてコピーします。
cp config.json.example config.json
次にvimコマンドで config.json を編集します。
vim config.json
TOKENにDiscord BotのToken、LOCALEをjaにします。
設定したら保存してvimを閉じます。
次に、このプログラムはTypeScriptで書かれてるので仕上げにpm2でTypeScriptで動かせるように以下のコマンドを入力しておきます。
cd node_modules/.bin
pm2 install typescript
cd ..
cd ..
いよいよ起動
では起動してみましょう。以下のコマンドで起動します。
pm2 start npm -- run start
以下のコマンドでログを見れます。
pm2 logs 0
起動したときにBotの名前が出てきたら起動成功です。
確認してみる
実際にBotが動いているか確認してみます。/play コマンドで再生してみます。しっかり再生できました。
後、初期ボリュームはクソでかいのでconfig.jsonのDEFAULT_VOLUMEで変えるか /volume コマンドで変更してから流した方がよさそうです。
私の場合、ボリュームは10がおすすめです。
取扱説明書を日本語化してここに置いておきます。
-
🎶 YouTubeの音楽をURLから再生する
/play https://www.youtube.com/watch?v=GLvohMXgcBo -
🔎 YouTubeの音楽を検索クエリ経由で再生する
/play under the bridge red hot chili peppers -
🔎 再生する音楽を検索して選択する
/search Pearl Jam -
📃 YouTubeのプレイリストをURLから再生する
/playlist https://www.youtube.com/watch?v=YlUKcNNmywk&list=PL5RNCwK3GIO13SR_o57bGJCEmqFAwq82c -
🔎 YouTubeのプレイリストを検索クエリ経由で再生する
/playlist linkin park meteora -
現在再生中 (/nowplaying)
-
キューシステム (/queue)
-
ループ / リピート (/loop)
-
シャッフル (/shuffle)
-
音量制御 (/volume)
-
歌詞 (/lyrics)
-
一時停止 (/pause)
-
再開 (/resume)
-
スキップ (/skip)
-
キュー内の曲番号までスキップ (/skipto)
-
キュー内の曲を移動 (/move)
-
キューから曲番号を削除 (/remove)
-
Discord APIへのpingを表示 (/ping)
-
ボットの稼働時間を表示 (/uptime)
-
ボットメッセージの削除を切り替える (/pruning)
-
ヘルプ (/help)
-
リアクション経由のメディアコントロール
最後に
Discordで楽しい音楽ライフを!!
最後までお読みいただきありがとうございました。