2021年9月15日 discord rhythm bot 終了...
discord botで有名なrhythmが終了してしまい、なんとか自分のサーバーでホストできないかと調べ始めたのが経緯です。
もちろん今の時代 〇〇 github と検索かければソースコードなんてすぐみつかるだろうと思い検索してみると案の定見つかりました!
※本家rhythmとは違います。
ローカル動作確認
エラーがいくつか出ましたがなんとか動いてdiscord botとも連携させることに成功しました!
本題ではないため簡単にまとめておきます。
os: windows10 home
git clone https://github.com/Malexion/Rhythm-Bot
cd Rhythm-Bot
npm install --global --production --add-python-to-path windows-build-tools
# 途中で止まってスタッキング
# https://github.com/felixrieseberg/windows-build-tools/issues/208
# によると...
npm install --global --production --add-python-to-path --vs2015 windows-build-tools
# 正常にインストール完了
npm install node-gyp -g
npm install typescript -g
npm install
# エラー発生
# 抜粋: VCINSTALLDIR not set, not running in VS Command Prompt
# https://github.com/nodejs/node-gyp/issues/2203
set VCINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\
npm config set msvs_version 2017 --global
npm install
./bot-config.json
{
"discord": {
"token": "tokenをdiscord developerから入手"
}
}
npm start
ここで !join, !searchなどが使えるようになり実際にチャンネルに入ってくれます。
しかし!playをしても歌ってくれません...
logを見ると、ffmpegのエラーがでたのでinstallします。
# https://stackoverflow.com/questions/60925319/i-am-getting-this-error-ffmpeg-avconv-not-found
npm i ffmpeg-static
npm install
npm start
ここで自分の環境では正常に動くようになりました!
途中でpermissionのエラーが出ましたがdiscordの設定でbotに管理者権限を付与すると解決しました(チャンネルにbotを招待する段階できかれる)。
discord bot関係の設定(token取得、チャンネル招待のやり方)はこちらを参考にしました。
https://qiita.com/yuto0214w/items/1ecee25efca6b5b7445b
デプロイする
このままでは自分のpcをつけっぱなしにしておかないといけません...
なので複数人いるサーバーで皆で使いたいとなるとこのままでは使い勝手が悪いです。
お金はかけたくないので今回はherokuを使うことにしました。
githubを見ているとPR段階ですがコンテナ化して使いやすくしてくれている人がいたのでこちらを使います。
ソース: https://github.com/dudeofawesome/Rhythm-Bot/tree/feat/containerize-and-format
PR: https://github.com/Malexion/Rhythm-Bot/pull/57
git clone https://github.com/dudeofawesome/Rhythm-Bot/tree/feat/containerize-and-format
し、ContainerfileをDockerfileに名前変更します。(heroku container:pushするため)
cd Rhythm-Bot
heroku create app-name #任意
heroku git:remote -a app-name
heroku config:set DISCORD_TOKEN=取得したtoken
heroku container:push worker
heroku container:release worker
# worker process が動いていなればheroku ps scaleでonにしましょう。
これだけでデプロイできました!思ったよりすんなりいってびっくりです。
たまにbotの歌い始めにノイズが入ることがあるくらいで音質などは違和感なく使えています。(herokuの無料枠だから仕方ない(?))
rhythm bot をまた使いたい方は是非試してみてください!
注意: 各ソースコード、github リポジトリは2021/10/1の状態です。