1. Trouble_SUM

    No comment

    Trouble_SUM
Changes in body
Source | HTML | Preview
@@ -1,275 +1,300 @@
Discordのボイスチャンネルに任意の音楽を流せるMusicBotなるものを教えてもらったので導入してみたいと思います。
とはいえ、自分がプログラムを起動してる間(つまりPCをつけっぱなしにしてる間)しかオンラインになっていないのは嫌なので、ちょっと前に契約した[Time4VPS](https://www.time4vps.eu/)のVPSにぶち込んで遊んでみようと思います。
月額250円くらいでした。一年以上の契約ならもうちょっと安い
<font color="lightgray">サーバがリトアニアにあるらしく、めちゃめちゃ速度が遅い(ping230くらい)のであまりオススメはしません。</font>
>[Discord 音楽botの作り方 SexualRhinoceros/MusicBot](http://takeshi.kill.jp/post-2254/)
こちらの記事を参考にさせていただきました。
#まずはLinuxのバージョンを確認
僕が使っているVPSのOSは"CentOS 7.2"です
バージョンの確認方法は
```.sh
$ cat /etc/redhat-release
```
#Musicbotを落とそう
[開発者のGithub](https://github.com/Just-Some-Bots/MusicBot)からCloneします。
###必要なパッケージをインストールしましょう
[開発者のwiki](https://github.com/Just-Some-Bots/MusicBot/wiki)にはCentOS用のチュートリアルがなかったのでUbuntuの記事を参考に色々入れてみることにします。
```.sh
$ 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をインストールしました
###あとは適当なユーザとディレクトリを作ってそこに落としてあげましょう
```.sh
$ sudo useradd -mG wheel musicbot
$ sudo passwd musicbot
#ここでパスワード入力を促されるので適当に決める
$ su - musicbot
#パスワードを入力する
$ mkdir github
$ cd github
$ git clone https://github.com/Just-Some-Bots/MusicBot
```
でとりあえずOK
###それから(重要)
Musicbotには**Python3.5以降が必要です。**<font color="lightgray">(CentOS7のデフォルトは2.x系列)</font>
>CentOS7にpython3系のインストール
http://daichan.club/python/916
こちらの記事がわかりやすいのでペペっといれておきましょう。
入れないと後でエラいことになります。
#botを作成しよう
Webブラウザを開いて[開発者ページ](https://discordapp.com/developers/applications/me)に飛び
![](https://i.gyazo.com/8d29c2140a409ec32277fa0d0329c97d.png)
New Appをクリック
![](https://i.gyazo.com/40d77d8f9b97470ef85dc4ca81972754.png)
こんな感じで適当に設定しましょう
終わったらCreate Appをクリック
![](https://i.gyazo.com/75087f0ceb1b5970478295ad45ea1f96.png)
まずは青で囲ったところからCreate a Bot Userをクリック
追加する?と聞かれるのでYes,do it!と答えてあげましょう
![](https://i.gyazo.com/ebeb02ace13f48c5c98d86c91846bef9.png)
終わったらオレンジで囲ったTokenのclick to revealをクリックすると出てくる文字列をコピーしておきましょう
<font color="red">(上にあるClient Secretと間違えないように!)</font>
#ここからがちょっとめんどくさい
ターミナルに戻って<font color="lightgray">(殆どの人はmusicbotユーザでgithubディレクトリだよね?)</font>
```.sh
$ vim ./MusicBot/config/example_options.ini
```
で編集画面に入ります
>[Credentials]
; Put your token here. Not "secret". The secret is not the token.
Token = <font color="orange">bot_token</font>
という部分があるので<font color="orange">bot_token</font>の部分をオレンジで囲った部分からコピーした文字列に置き換えましょう。
```
/Token
2wdw
```
でbot_tokenを削除できます
(僕はTeratermを使ってssh接続していたのでaで挿入モードに入ってマウス右クリックでペーストしちゃいました)
次にDiscordを開いて
ユーザ設定->テーマと進み開発者モードにチェックを入れます。
![](https://i.gyazo.com/eaed78da199cd6f6c4a03fae294105ce.png)
完了を押してテキストチャンネルなどに表示されている自分のアイコンを右クリックすると"IDをコピー"ができます。
![](https://i.gyazo.com/1e515eda407c970820329920238e161b.png)
コピーした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 = <font color="red">000000000000000000</font>
で<font color="red">000000000000000000</font>と表示されている部分と置き換えます
終わったら
```
:wq
```
で保存して終了
ブラウザで開いていた開発者ページに戻り、赤で塗りつぶしてある文字列<font color="red">(ClientID)</font>を選択してコピーします。
![](https://i.gyazo.com/75087f0ceb1b5970478295ad45ea1f96.png)
###認証
Webブラウザで新しいタブを開き
>https\://discordapp.com/oauth2/authorize?&client_id=<font color="red">123456789123456789</font>&scope=bot&permissions=0
のように<font color="red">コピーしたClientID</font>を加えたURLのページを開くと、
![](https://i.gyazo.com/93697dcc235e74901e2290f053ec6c9a.png)
このようなページが出てくるので、任意のサーバーを選択し"Botを追加します"にチェックを入れて認証をクリック
![](https://i.gyazo.com/6a4e691892ede3b466f84061c45bc749.png)
Discordでサーバーを確認するとちゃんと追加されていました。
#botを起動しよう
ターミナルに戻ります。<font color="lightgray">(musicbotユーザの状態として話を進めます。)</font>
MusicBotディレクトリ内にあるrun.pyを起動すると動いてくれるみたいです。
```.sh
$ python --version
```
でバージョンが3.5以降になっていることを確認したら
```.sh
$ cd ~/github/MusicBot
$ python run.py
```
ダーッと文字列が流れたあとに
>Ok lets hope it worked
となると思います。やったね
###さあ実行だ!
と思って
```.sh
$ 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じゃないとダメなんじゃないのか~~~~~?????
```.sh
$ cd config
#MusicBot/configディレクトリに移動する
$ mv options.ini options_backup0104.ini
#一応バックアップを取る
$ cp example_options.ini options.ini
$ cd ..
#MusicBotディレクトリに戻る
```
###で、もっかい
```.sh
python run.py
```
![](https://i.gyazo.com/0c19bbac5ac14c7741b096aa950ac9cd.png)
オ!今度はうまくいきました
###screenで動かす
とはいえターミナルをずっと占拠されるのも困るのでscreen内で実行してもらいましょう
実行中のMusicbotの終わらせ方がわかんなかったのでCtrl-Cでコマンドを終了
```.sh
$ sudo yum -y install screen
$ screen -S musicbot
#musicbotという名前のスクリーンを作る
$ python run.py
```
で実行したらCtrl-A Dでscreenを抜けます。
MusicBotのスクリーンに戻るには
```.sh
$ screen -r musicbot
```
というわけで終了!
サーバーを再起動したときにpython3.5以降でrun.pyを実行するようなシェルスクリプトを書いておけばいい感じになると思います。
###使い方
MusicBotのいるサーバーのボイスチャンネルに入り、
```
!summon
```
とメッセージを送ると流してくれます!
ちなみに流す内容は/MusicBot/config内にある
autoplaylist.txtにURL記述で設定できます
記述が終わったら
```
!restart
```
で再起動
#ちなみに結果は
そこそこいい感じで流してくれました!と言いたいところですがときどき音声が途切れます。
こればっかりは通信の問題なのでちゃんと日本のVPSを借りて使いましょうネ。
#よく使うコマンド
###自分がいるボイスチャンネルにbotを召喚
```
!summon
```
###\<URL>の動画及び音声を再生
```
!play <URL>
```
###現在再生中の音声をスキップ
```
!skip
```
###youtubeかsoundcloudで、\<word>の文字列で\<num>件の結果を検索して表示
\<num>は省略可能 デフォルト値:3
\<word>は間にスペースが入ってもクォーテーション等で囲まなくてよい
```
!search <youtube or soundcloud> <num> <word>
```
\<URL>に招待コードを入力するとそのサーバに参加するリンクを送ってくる
```
!joinserver <URL>
```
+
+#17/05/30追記
+run.pyを実行した際に、以下のようなエラーが出る場合があるみたいです。
+
+```
+Traceback (most recent call last):
+ File "run.py", line 162, in main
+ from musicbot import MusicBot
+ File "/InstalledDir/MusicBot/musicbot/__init__.py", line 1, in <module>
+ from .bot import MusicBot
+ File "/InstalledDir/MusicBot/musicbot/bot.py", line 32, in <module>
+ from . import downloader
+ File "/InstalledDir/MusicBot/musicbot/downloader.py", line 25, in <module>
+ youtube_dl.utils.bug_reports_message = lambda: ''
+AttributeError: module 'youtube_dl' has no attribute 'utils'
+```
+
+https://github.com/Just-Some-Bots/MusicBot/issues/830
+
+作者のGithub Issuesに解決方法が書かれていました。
+依存関係のアップデートが必要とかなんとか
+
+```.py
+$ python3.5 -m pip install --upgrade -r requirements.txt
+```