Among Usと連携してDiscordを自動ミュートにしたり部屋のIDを通知したりする「AutoMuteUs」というBOTがある。
非常に便利なのだが、Among Usが人気なせいか公開されているBOTは動作がいまいち不安定だったり遅かったりするらしい。また、自前で立てようとするとバージョンによってコロコロ設定すべき箇所が変わってるようだ*1。
ということで、自分が管理するVPSで動かした際の要点をメモっておく。また一度も実際に遊んだことがなく、これで本当にミュートが動作するのかはわからない(人がいないときに動作を確認したため)。現在のバージョン・ご自身の環境などを勘案して適宜読み替えてほしい。
目次!
サーバー側(AutoMuteUs)
- Lightsailのコンソールにて、ファイアーウォールで任意のポートを開放しておく
- 以下のサンプルでは65535にしている
- dockerおよびdocker-composeをインストールしておく
あとは以下のQiitaの記事通りで概ね動作する……ハズなのだが、バージョンが上がったせいか .env
の設定でハマりどころがあった。
.env の設定
.envで実際に設定が必要だったのは以下。
AUTOMUTEUS_TAG=6.5.0 GALACTUS_TAG=2.4.0
dockerイメージのタグを指定する。タグの一覧は以下にあり、現時点での最新バージョンを指定した。
- AUTOMUTEUS_TAG
- GALACTUS_TAG
DISCORD_BOT_TOKEN=xxxxxxxxxxxxxxxx
Discord Developer Portal にて発行したTokenをコピーして貼り付ける。発行方法の詳細は以下の「BOT_README.md」を参照。なおこのTokenは後ほどクライアント側でも必要となる。
https://github.com/denverquane/automuteus/blob/master/BOT_README.md
GALACTUS_HOST=http://example.com:65535 GALACTUS_EXTERNAL_PORT=65535
example.com
にはホスト名を、GALACTUS_HOSTの末尾とGALACTUS_EXTERNAL_PORTには先ほど解放したポート番号を指定する*2。
なお、人によっては「2020年になってHTTP?」と思われるかもしれない。リバースプロキシを立てればHTTPSにすることが出来るようだがまだ試していない*3。
クライアント側(AmongUsCapture)
AmongUsCaptureを動作させる人は、 理論上は AutoMuteUs を稼働させている人と同一でなくても良いはずなので、そういう書き方にしてみた。1台のAutoMuteUsを使って複数の部屋を同時進行させることも可能なようだが保証はしない。
初回のみ
1) Among Usを遊ぶのと同じWindowsマシンで「AmongUsCapture.exe」を起動 2) settings→Discordで「Discord token」を設定しsubmit
※Discord tokenは、AutoMuteUsを動かしてる人に聞いて設定する(=先ほど設定したものを利用する)
3) Among Usを起動し、FREEPLAYを遊んでみてAmongUsCaptureにログが出ることを確認する
※FREEPLAYではDiscordのミュートのオンオフは操作されずログだけが流れる
ゲームプレイ時
1) ボイスチャンネルに入る(次のコマンドより先にVCに入ってないとエラーになる) 2) テキストチャンネルで .au new と打つ 3) BOTからDMが来るので、aucapture:// から始まるURLをクリック 4) [ClientSockeet]: Connected successfully! と表示されたら接続OK
※AmongUsCapture.exe は、URLをクリックすると勝手に起動するので事前に起動しなくてよい
こんなときは
- 複数のDiscordサーバーにAutoMuteUsを導入したいとき
Discord Developer Portal
でOAuth2を複数回(Discordサーバーの数だけ)認証すればよい- 全サーバーでTokenは共通である。Tokenをリセットする時は全サーバーに影響するので注意する
1つのAutoMuteUsプロセスを複数サーバーで共用させるのは、あまりセキュアじゃなさそうに思える。テスト用の1人サーバーと本番用サーバーぐらいに留めておくべきではないかと思う。