Among Us 用超便利 Discord bot “AutoMuteUs” をセルフホストした (公式推奨簡単版)

Pocket

注: この記事は、 2020年11月23日~25日 時点の話だよ。 状況は今後も刻々と変わる可能性が高いよ。  
なお 12月20日 現在、 Among Us v2020.12.9s では、 以下の手順で問題なく動いていることを確認している。

今年の夏あたりから、日本でも爆発的なブームが続いている、 宇宙人狼 こと Among Us

Discord でボイスチャットしながらやるのが面白いのだけれど、 ゲームの仕様上、ミュート管理が結構面倒だ。

そこに、 Among Us のゲーム画面に同期してミュート管理を超いい感じに自動で行ってくれる Discord bot が存在する。

それが AutoMuteUs だ。

このツールは、 以前は "AmongUs AutoMute" などとも呼ばれ、 誰か一人が Windows Steam 版 Among Us のゲームと一緒にキャプチャープログラムを立ち上げ、 公式の Discord Bot と連携させるだけで超お手軽に使える…
…はずだった。

11月下旬現在、 AutoMuteUs 公式の手順に従って、 bot の .au new コマンドでゲームを作成しようとすると、以下のような悲しいメッセージを目にするだろう。

I'm very sorry, but Discord is rate-limiting me and I cannot accept any new games right now :frowning:
Please try again in a few minutes.

Discord のレート制限に引っかかってるって。
Among Us は人気すぎるし仕方ないね!

そして、仮にゲームの作成が無事にできたとしても、 bot のミュート変更が遅れたり、変更しそびれたりと不安定だったり…

…何とかしたい。

ちょっと古い v2.4.3 をセルフホストするのが推奨

2020/11/14 時点の AutoMuteUs の 公式 Discord サーバー では、 このレート制限について以下のようにアナウンスされている。

Soup 2020/11/14

Hey all,

We know the Official Bot has been having some serious issues lately, and we're sorry it keeps going down.
We're looking at it right now and coming up with solutions, but we're fairly certain that the Bot is hitting the GLOBAL bot rate limit, and this is causing the outages (IP gets banned for 10 minutes upon hitting the limit). The bot is distributed across multiple IPs, but we need clever solutions to make sure we address the problem fully.

It certainly makes sense that this would be the culprit, given that Discord has no "mass mute" API request option, and thus every single game is using ~10 requests to mute players, additional requests to update the status message, etc.

We're developing solutions right now, but it might take some time. If you have some critical games coming up, we recommend self-hosting with version 2.4.3 while we get things ironed out with the official bot. The video detailing how to self-host version 2.4.3 is here: https://www.youtube.com/watch?v=LUptOv5ohNc, and the release is here: https://github.com/denverquane/automuteus/releases/tag/2.4.3

Thanks everyone for the patience, love you guys :kissing_heart:

ざっくりいうと、

  • 公式ボットが Discord のレート制限に引っかかっているが、これは根本的な仕組みの問題。
  • 完全な対処には複雑な解決策が必要なので、解決には時間がかかるかもしれない。
  • プレイしたい大事なゲームがあるなら、バージョン2.4.3でセルフホストすることをお勧めする。

という感じ。

AutoMuteUs はめっちゃアクティブに開発が進んでおり、 2020/11/14 の時点ですでに バージョン 4.0.3 までリリースされているのだが、 敢えて割と古い 2.4.3 の利用が推奨されている。
これはおそらく、 3.0.0 以降のバージョンのセルフホストでは、 docker が必須になっているなど、導入の敷居がかなり高くなっているためだろう。

技術力に自信があるなら最新版を使ってもかまわないのだが、 とにかくすぐに遊びたいだけなら、 おとなしく 2.4.3 を使っておくのがよい。
(2.4.4 も存在するけど、 x86 版 Windows で動かす分には差が無いようだ)

古いバージョンでも、 bot の機能は十二分に便利… というか、主要な機能では最新版と差が無い。

但し、あくまで古いバージョンのままであるという点は注意したい。
例えば、安定性は最新版に及ばないかも知れないし、 近くリリースされるらしい Among Us の(日本語を含めた)多言語対応などではうまく動かないかもしれない。
(後者は 後述の AmongUsCapture が吸収してくれそうではあるけど。)

v2.4.3 の導入手順

ということで、 v2.4.3 のセルフホストの導入手順について簡単に紹介してみようと思う。

… といっても、 上記の https://www.youtube.com/watch?v=LUptOv5ohNc の動画をなぞっているだけだが。
(英語の動画ではあるけど、 YouTube の自動字幕&自動翻訳で割と簡単に理解できる内容だと思う)

実施にあたっては 自己責任 でお願いします。
状況が日々刻々とかわる話題なので、 記事のコメントで質問されても、答えるつもりはないので悪しからず。
他の方が回答してくれるのは大歓迎ですけどもね。

後述するプリコンパイル済みの exe ファイルが信用できないと感じる場合は、ソースコードの内容を確認し、自身で exe をビルドすると良いだろう。
私は面倒くさかったので、プリコンパイル済みの exe 使うけど。

1. Among Us の 公式 Steam版 を用意する

まず、 Among Us の Steam版 を買おう。
Andoroid版 や iOS版 の Among Us では AutoMuteUs は動作ないので。

なお、 プレイヤーのうち誰か一人だけが AutoMuteUs を動かしていれば良く、 クロスプラットフォームで対戦もできるので、 全員 Steam版 である必要は無い。

2. GitHub から automuteus_windows と AmongUsCapture を DL

開発者の GitHub リポジトリのリリースページから、以下の二つのファイルを、適当なフォルダに DL しよう。

一度アプリを起動したら保存フォルダを移動しないほうが良いので、どこか固定のフォルダを決めてそこへ移動させておくとよい。

ネットワークからダウンロードした exe ファイルは ZoneId が付与されていて、実行時に Windowns による制限がかかるので、 それぞれの exe ファイルを右クリックしてプロパティを開き、「ブロックの解除」をしておこう。

なお、 AmongUsCapture の Readme には、 .NET Core 3.1 系ランタイム のインストールが別途必要と書かれているが、 AmongUsCapture 2.4 系以上であれば不要だと思う。 多分。
そもそも、 2.4.5 以降 TargetFramework が net5.0-windows に設定されてて、 .NET 5 のランタイムで動いてるし。 ランタイムは exe に同梱されているから別途インストールは不要なはず。

3. Discord の bot を作成する

上記の Discord の開発者ページに移動して、 bot を作成しよう。


まず、 New Application ボタンから Discord アプリを作成して、 Bot タブから Add Bot をクリックして、 bot を作成する。

PUBLIC BOT のスイッチを OFF にして、 変更点を保存する。

Token の Copy ボタンをクリックして、 bot のトークンコードをメモ帳など適当なところに控えておく。

OAuth タブに移動して、
SCOPES から bot をチェック
BOT PERMISSIONS から Administrator をチェック
Copy ボタンで 認可 リンクをコピー
の順に実行。

そして ③ でコピーしたリンクをブラウザで開き、 Discord にログインしてどのサーバーに bot を追加するかを選択する。

…とここまでで、 bot の作成は完了。

4. AutoMuteUs の設定

先ほどダウンロードした automuteus_windows.exe を一度起動させよう。

すると、以下のようなエラーが表示され、 10秒後にプログラムが勝手に終了するはずだ。

Program exited with the following error:
no DISCORD_BOT_TOKEN provided
This window will automatically terminate in 10 seconds

すると、 その代わりに同じフォルダに config.txt というファイルが作成される。

そのファイルを メモ帳 などで開くと

DISCORD_BOT_TOKEN=

と書かれているはずだ。

その = の後ろに、 (3.) で控えておいた、 bot のトークンコードを貼り付けて保存しよう。

そして改めて automuteus_windows.exe を起動する。

今度は Windows からファイアウォールの通信の許可ウィンドウが出るので、現在のネットワークでアクセスを許可してやる。

ここまで来れば、 automuteus_windows.exe のコンソールウィンドウで "Bot is now running." などと表示されるはずだ。

5. AmongUsCapture をリンクさせる

Steam版 Among Us を起動した状態で、 先ほどダウンロードした AmongUsCapture.exe を起動させる。

AmongUsCapture が Among Us のプログラムを見つけて反応するはずだ。

その状態で、 Discord の bot が入っているテキストチャンネル に、以下のコマンドを入力する。
(コマンドと言っても、ドットから始まるメッセージを入力するだけだが)

.au new

すると、 BOT から以下のような ダイレクトメッセージ が届く。
(サーバー内のチャンネルのメッセージではないので注意)

ここに書かれている aucapture:// で始まるリンクをクリックすると、 AmongUsCapture にフォーカスが移って、 連係動作が開始される。

ちなみに、 上手く AmongUsCapture が反応しない場合、 このメッセージ右下の URL, Code の内容を、 手動で AmongUsCapture へ入力しても OK だ。


ここまで行い、 チャンネル内の bot の表示が右下のようにグリーンになれば、 全ての準備は完了だ。

もし、 automuteus_windows.exe のコンソールウィンドウで meet error: websocket: close 1000 (normal) のようなエラーが出て bot と Capture のリンクが上手くいかない場合、前述のファイアウォールのアクセスの許可ができていない可能性がある。

その場合、以下の手順で許可設定をした上で、 automuteus_windows.exe を再起動してみよう。

  1. Winキー+R でファイル名を指定して実行ダイアログを開く
  2. Firewall.cpl を実行して、 Windows Defender ファイアウォール ウィンドウを開く
  3. 「ファイアウォールを介したアプリまたは機能を許可」 をクリック
  4. 一覧から automuteus_windows.exe を探し、 設定の変更 → チェック → OK と設定して、アプリの通信を許可する。

遊び方

Among Us で部屋を立て、参加者に部屋に入ってもらう。

すると、 Among Us 上のプレイヤー名とキャラクターの色が、 チャンネルのテキストメッセージに表示される。

各プレイヤーが Discord 上で、 自分の色と同じリアクションの絵文字 をクリックすると、 Among Us のプレイヤーと Discord ユーザーがリンクされる。

この状態でゲームを開始すると、 プレイヤーの生存状態や会議のシーンにあわせて、自動的にボイスとスピーカーのミュートが変化するようになる。

なお、ゲーム内で死んだプレイヤーは、 探索中にミュートが解除される一方で、死んでいないプレイヤーは探索中はスピーカーもミュートになって聞こえない状態となる。
このため、死者同士の いわゆる霊界チャット も行える。

その他、細かい使い方は、 bot の .au help コマンドなどで確認して欲しい。

例えば、 bot が task と discuss のステージ変更を取りこぼしてしまった場合も、 .au force コマンドを使って手動でステータスを変更することも可能だ。

以上が簡単な紹介だ。

快適な Among Us ライフを!

メモ

AutoMuteUs とは直接関係ないけど、 気づいたことなど。

  • Among Us は Alt+Enter で フルスクリーンとウィンドウを切り替えられる。 AmongUsCapture はどちらでも OK。
  • Among Us のプレイヤー名と、 Discord の名前は揃っていた方がわかりやすい。 Discord の名前はサーバー毎に「ニックネーム」として名前が変更できるので、 Discord の名前を Among Us の名前に揃えておくと良い。
  • ストアで購入できる Among Us だけでなく、 AutoMuteUs のほうも https://www.patreon.com/automuteus にて $1/月~ 課金できるぞ。 $5/月 以上支援すれば 公式bot の 優先ミュートbotが貰えて快適にプレイできるはずだ。 公式bot の維持にはだいぶコストがかかっていることが明らかなので、気に入ったら支援してあげよう。

Among Us 用超便利 Discord bot “AutoMuteUs” をセルフホストした (公式推奨簡単版)」への22件のフィードバック

  1. めちゃめちゃ分かりやすかったです、ありがとうございます。
    ちなみに私は記事通りにやってもうまくいかなかったのですが、discordのバージョンアップができていませんでした。
    私のように躓いた方の参考になればなと思います。

  2. めちゃくちゃ分かりやすかったので、とっても感謝してます!!!!どこのまとめ見てもできなくて6時間奮闘してたので、こちらを見て一瞬でできて本当に助かりました。マジでありがとうございます!!!!!

  3. botとAmongUsCapture.exeのリンクは出来たのですが、.au new と打ってもDMが来ません。どなたか原因分かる方いらっしゃいますか?

  4. 本記事拝見して設定を行いましたが、
    AmongUsCapture.exe で以下のエラーを吐いてしまいました。
    Amongus: 起動済/ Discord 上にBOTはオフラインで参加済み/
    トークンはconfig.txt にコピペしなおしましたが状態変わらずで .au new コマンドを受け付けてくれません。
    原因わかる方いらっしゃいますでしょうか。

    [GameMemReader]: Connected to Among Us process (5148)
    [Discord]: You do not have a self-host discord token set. Enabling this in settings will increase performance.
    [GameVerifier]: Client verification: PASS.
    [GameMemReader]: Loaded offsets: v2020.12.9s
    [GameMemReader]: State changed to MENU

  5. トークンをconfigへコピペして保存後にautomuteus_windows.exeを起動してもトークンが反映されないのですが原因が分かる方いますでしょうか。

  6. サーバーに招待したbotがオンラインにならないのですが解決方法はありませんか?

    • ダウンロードした
      「automuteus_windows.exe」
      というアプリケーションを開けばオンラインになりますよ

  7. この通りにbot作成したのですが、PCを再起動したらディスコードでbotがオフラインになり、,au newのコマンドにも反応してくれません。
    何が原因なんでしょうか

    • [,]ではなく[.]です。
      .au new
      でやってみてください。
      カンマではコマンドは反応しません。

  8. BOT がMain Menu
    @・・・ is running an Among Us game!
    The game is happening in any voice channel!
    とまではいったのですが部屋を立てて人が入っても動作しません

    • 下のコメントでも言われてるけど、せめて、

      * automuteus_windows.exe
      * AmongUsCapture
      * Discord 上の bot のメッセージ

      それぞれが、どのように表示されているかくらい書かないと、貰える助言ももらえないでしょう。
      動かないということは、 automuteus_windows.exe や AmongUsCapture のログに、エラーが表示されていたり、逆に表示されるべきログが表示されていなかったりするはずだから。

  9. .au new でDMが届かないのですが、原因が分かる方はおりますでしょうか。
    設定の「サーバーにいるメンバーからのダイレクトメッセージを許可する」はONになっていました。

    • さすがに 「main menuから動かないです」 だけでは、状況がわからな過ぎて、誰も助けられないぞ。。。

      せめて、

      * automuteus_windows.exe
      * AmongUsCapture
      * Discord 上の bot のメッセージ

      それぞれが、どのように表示されているかくらい書かれないと。

  10. meet error: websocket: close 1000 (normal)

    上記のエラーが出るのは、ファイアウォールで通信がブロックされていル状況で発生するのは間違いなさそうです。
    ファイアウォールでブロックされている状態でも、エラーが出る場合と出ない場合があるのは、 WebSocket のフォールバックに製鋼する場合と失敗する場合があるからかも知れません。
    いずれにせよ、ファイアウォールのブロックがなければ、このエラーは解消されそうです。

    記事の方に、 ファイアウォールの許可の仕方や、誤って許可せずファイアウォール警告ダイアログを閉じてしまったときの復旧の仕方を追記したので、ご参照をば。

  11. rate-limitedの謎が解けました。
    質問なのですが、botを作成、.au nで作成したあと、作ったbotからhost,codeを入力すると、cmdの方のエラーメッセージで
    meet error: websocket: close 1000 (normal)
    と出ます。これはネットワーク接続で問題が発生しているのでしょうか

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください