Discordのボイスチャンネルに任意の音楽を流せるMusicbotなるものを教えてもらったので導入してみたいと思います。
とはいえ、自分がプログラムを起動してる間(つまりPCをつけっぱなしにしてる間)しかオンラインになっていないのは嫌なので、ちょっと前に契約したTime4VPSのVPSにぶち込んで遊んでみようと思います。
月額250円くらいでした。一年契約ならもうちょっと安い
サーバがリトアニアにあるらしく、めちゃめちゃ速度が遅いのであまりオススメはしません。
こちらの記事を参考にさせていただきました。
まずはLinuxのバージョンを確認
僕が使っているVPSのOSは"CentOS 7.2"です
バージョンの確認方法は
$ cat /etc/redhat-release
Musicbotを落とそう
開発者のGithubからCloneします。
まずは必要なパッケージをインストール
開発者のwikiにはCentOS用のチュートリアルがなかったのでUbuntuの記事を参考に色々入れてみることにします。
$ sudo yum -y install git gcc gcc-c++ kernel-devel libffi-devel
さらに
CentOS7にyumでffmpegをインストール
http://vild.hatenablog.com/entry/2015/09/29/125940
を参考にffmpegをインストールしました
あとは適当なユーザとディレクトリを作ってそこに落としてあげましょう
$ sudo useradd -m musicbot
$ sudo passwd musicbot
#ここでパスワード入力を促されるので適当に決める
$ su - musicbot
#パスワードを入力する
$ mkdir github
$ cd github
$ git clone https://github.com/Just-Some-Bots/MusicBot
でとりあえずOK
それからMusicbotにはPython3.5以降が必要です。(CentOS7のデフォルトは2.x系列)
CentOS7にpython3系のインストール
http://daichan.club/python/916
こちらの記事がわかりやすいのでペペっといれておきましょう。
botを作成しよう
Webブラウザを開いて開発者ページに飛び
New Appをクリック
こんな感じで適当に設定しましょう
終わったらCreate Appをクリック
まずは青で囲ったところからCreate a Bot Userをクリック
追加する?と聞かれるのでYes,do it!と答えてあげましょう
終わったらオレンジで囲ったTokenのclick to revealをクリックすると出てくる文字列をコピーしておきましょう
(上にあるClient Secretと間違えないように!)
ここからがちょっとめんどくさい
ターミナルに戻って(殆どの人はmusicbotユーザでgithubディレクトリだよね?)
$ vim ./MusicBot/config/example_options.ini
で編集画面に入ります
[Credentials]
; Put your token here. Not "secret". The secret is not the token.
Token = bot_token
という部分があるのでbot_tokenの部分をオレンジで囲った部分からコピーした文字列に置き換えましょう。
/Token
2wdw
でbot_tokenを削除できます
(僕はTeratermを使ってssh接続していたのでaで挿入モードに入ってマウス左クリックでペーストしちゃいました)
次にDiscordを開いて
ユーザ設定->テーマと進み開発者モードにチェックを入れます。
完了を押してテキストチャンネルなどに表示されている自分のアイコンを右クリックすると"IDをコピー"ができます。
コピーしたIDを先程開いたexample_options.iniの
[Permissions]
; This number should be your id. It gives you full permissions. You do not put the bot's id here. That's silly.
; If you don't know how to get this, scroll up a bit and read the part that says "HOW TO GET VARIOUS IDS"
; If you can't do that for some reason, join the help server (invite in the readme) and type this in chat: !id
; If you still don't understand, watch this https://streamable.com/4w8e and may your respective deity have mercy on your soul.
; I don't want any more "how do I get the OwnerID" questions.
OwnerID = 000000000000000000
で000000000000000000と表示されている部分と置き換えます
終わったら
:wq
で保存して終了
ブラウザで開いていた開発者ページに戻り、赤で塗りつぶしてある文字列を選択してコピーします。
Webブラウザで新しいタブを開き
https://discordapp.com/oauth2/authorize?&client_id=000000000000000000&scope=bot&permissions=0
のようにコピーしたClientIDを加えたURLのページを開くと、
このようなページが出てくるので、任意のサーバーを選択し"Botを追加します"にチェックを入れて認証をクリック
Discordでサーバーを確認するとちゃんと追加されていました。
botを起動しよう
ターミナルに戻ります。(musicbotユーザの状態として話を進めます。)
Musicbotディレクトリ内にあるrunbot.pyを起動すると動いてくれるみたいです。
$ python --version
でバージョンが3.5.1以上になっていることを確認したら
$ cd ~/github/Musicbot
$ python run.py
ダーッと文字列が流れたあとに
Ok lets hope it worked
となると思います。やったね
さあ実行だ!と思って
$ python run.py
と打ったら怒られました。
Connecting...
An error has occured:
Problem: Bot cannot login, bad credentials.
Solution: Fix your Email or Password or Token in the options file. Remember that each field should be on their own line.
だそうです。
そういえば編集してたのがexample_options.iniってことはoptions.iniじゃないとダメなんじゃないのか~~~~~?????
$ cd config
#MusicBot/configディレクトリに移動する
$ mv options.ini options_backup0104.ini
#一応バックアップを取る
$ cp example_options.ini options.ini
$ cd ..
#MusicBotディレクトリに戻る
で、もっかい
python run.py
オ!今度はうまくいきました
とはいえターミナルをずっと占拠されるのも困るのでscreenコマンドで実行してもらいましょう
実行中のMusicbotの終わらせ方がわかんなかったのでCtrl-Cでコマンドを終了
$ sudo yum install -y screen
$ screen -S musicbot
$ python run.py
で実行したらCtrl-A DでScreenを抜けます。
Musicbotのスクリーンに戻るには
$ screen -r musicbot
というわけで終了!
サーバーを再起動したときにpython3.5でrun.pyを実行するようなシェルスクリプトを書いておけばいい感じになると思います。
Musicbotのいるサーバーで
!summon
とメッセージを送ると流してくれます!
ちなみに結果は
そこそこいい感じで流してくれました!と言いたいところですがときどき音声が途切れます。
こればっかりは通信の問題なのでちゃんと日本のVPSを借りて使いましょうネ。