[Among Us] automuteus v4.0.4をdocker-composeで起動

automuteusはAmong Usをプレイするときに使える便利なBotです．

[AutoMuteUs - GitHub](https://github.com/denverquane/automuteus)

この記事では最新版をWindows上のWSL2で起動するときのメモを書いておきます．

# 環境

- Windows 10 ビルド 2004
- docker-compose version 1.27.4, build 40524192
- Docker version 20.10.0, build 7287ab3
- AmongUsCapture v2.8.4
- AutoMuteUs v4.0.4

# 起動方法

以下の記事を見ながらBOTをつくり **DISCORD_BOT_TOKEN** を取得します．

[Among Us 用超便利 Discord bot “AutoMuteUs” をセルフホストした (公式推奨簡単版) | Aqua Ware つぶやきブログ](https://aquasoftware.net/blog/?p=1415)

事前にDocker for WindowsとWSL2, docker-composeをインストールしておきます．
WSL 2 based engineにチェックを入れておきます．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103672/9f87e2b6-ef57-aaec-8bb1-60d4404a94d0.png)

[公式にあるdocker-compose.yml](https://github.com/denverquane/automuteus/blob/master/docker-compose.yml)だと起動しなかったので，修正を加えた以下を使いました．`?err`でエラーが発生していたので修正を入れています．

```yaml
version: "3"

services:
  automuteus:
    # Either:
    # - Use a prebuilt image
    image: denverquane/amongusdiscord:${AUTOMUTEUS_TAG:-4}
    # - Build image from local source
    #build: .
    # - Build image from github directly
    #build: http://github.com/denverquane/automuteus.git

    restart: always
    ports:
      # 5000 is the default service port
      # Format is HostPort:ContainerPort
      - ${SERVICE_PORT:-5000}:5000
    environment:
      # These are required and will fail if not present
      - DISCORD_BOT_TOKEN=${DISCORD_BOT_TOKEN}
      - HOST=${GALACTUS_HOST}

      # These Variables are optional
      - DISCORD_BOT_TOKEN_2=${DISCORD_BOT_TOKEN_2:-}
      - EMOJI_GUILD_ID=${EMOJI_GUILD_ID:-}
      - CAPTURE_TIMEOUT=${CAPTURE_TIMEOUT:-}

      # Do **NOT** change this
      - REDIS_ADDR=${AUTOMUTEUS_REDIS_ADDR}
    depends_on:
      - redis
      - galactus
    volumes:
      - "bot-logs:/app/logs"
  galactus:
    ports:
      # See sample.env for details, but in general, match the GALACTUS_EXTERNAL_PORT w/ the GALACTUS_HOST's port
      - ${GALACTUS_EXTERNAL_PORT:-8123}:${BROKER_PORT}
    image: automuteus/galactus:${GALACTUS_TAG:-0.0.3}
    restart: always
    environment:
      # Do **NOT** change these
      - BROKER_PORT=${BROKER_PORT}
      - REDIS_ADDR=${GALACTUS_REDIS_ADDR}
      - GALACTUS_PORT=${GALACTUS_PORT}
    depends_on:
      - redis

  redis:
    image: redis:alpine
    restart: always
    volumes:
      - "redis-data:/data"

volumes:
  bot-logs:
  redis-data:
```

新たに .env をdocker-compose.ymlと同じディレクトリに作ります．
設定値は公式にある sample.env をもとに作成します．

```shell
AUTOMUTEUS_TAG=4
GALACTUS_TAG=0.0.3

# change these, but see comment below about HOST/PORT
DISCORD_BOT_TOKEN=【ここに取得したトークンを与える】
GALACTUS_HOST=
GALACTUS_EXTERNAL_PORT=

# GALACTUS_HOST can include the port or not. If you don't include the port,
# it will default to :80/:443 depending on http:// v https://
# **Make sure that GALACTUS_EXTERNAL_PORT matches the Port for the above host, UNLESS you use a reverse proxy/nginx!!!**
# Ex: if GALACTUS_HOST=http://localhost, then GALACTUS_EXTERNAL_PORT should be 80 (HTTP)
# Ex: if GALACTUS_HOST=https://localhost, then GALACTUS_EXTERNAL_PORT should be 443 (HTTPS)
# Ex: if GALACTUS_HOST=http://localhost:8123, then GALACTUS_EXTERNAL_PORT should be 8123
# If you use a reverse proxy, then GALACTUS_HOST should have the port of your reverse proxy, and it should proxy to the
# GALACTUS_EXTERNAL_PORT (ex 443 -> 8123)

# Optional, leave alone by default
DISCORD_BOT_TOKEN_2=
EMOJI_GUILD_ID=
CAPTURE_TIMEOUT=

# DO NOT change these unless you really know what you're doing
BROKER_PORT=8123
GALACTUS_REDIS_ADDR=redis:6379
AUTOMUTEUS_REDIS_ADDR=redis:6379
#unused in v4
GALACTUS_PORT=5858
```

docker-compose upでコンテナを起動します．

```
sudo docker-compose up
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103672/f87413f0-8f49-55c4-7133-9be7ba48daba.png)

AmongUsCaptureを以下からダウンロードして起動します．

[denverquane/amonguscapture: Capture of the local Among Us executable state](https://github.com/denverquane/amonguscapture)

認証URLを開いてBotを許可すると，DiscordのDMでBotがキャプチャの許可を求めてきます．このリンクをクリックするとamonguscaptureにURLとコードが表示されキャプチャが許可されます．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103672/3ecd9141-92bd-f007-4c07-2caf9214d9fd.png)

Botに応答させたいテキストチャンネルで `.au new` を入力します．このコマンドで新たなゲームが開始されます．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103672/850ba41c-1716-69e8-6dee-409963a2b1af.png)

Among Usのユーザ名とDiscordのユーザ名が不一致の場合は，自分のキャラクタに対応するスタンプを押すことで，Among UsとDiscordの対応付けがされます．

ボイスチャンネルとDiscord Botの自動ミュート機能を連携させるために，以下のコマンドでチャンネルとBotの連携を行います．

```
.au track <チャンネル名>
```

## その他のコマンド

以下のコマンドでコマンド一覧を見れます．

```
.au help
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103672/95752905-bae9-d3f4-ed63-5656e0cce42f.png)

特に便利だったコマンド次のものです．

**全員のミュートを無効化**

遊び方を説明しながらプレイするときに便利でした．

```
.au unmuteall
```

**ユーザの対応付けを更新**

Among UsとDiscordの対応づけが上手く出来ないときの確認に便利でした．

```
.au refresh
```

**言語設定**

日本語は不完全ではあるものの，サポートされていました．

```
.au language ja
```

# 参考URL

- [AutoMuteUs (Among Us の自動ミュート bot) のセルフホスティング - Qiita](https://qiita.com/tubo28/items/0ef6d1a719faa7c26739)
- [denverquane/amonguscapture: Capture of the local Among Us executable state](https://github.com/denverquane/amonguscapture)
- [Among Us 用超便利 Discord bot “AutoMuteUs” をセルフホストした (公式推奨簡単版) | Aqua Ware つぶやきブログ](https://aquasoftware.net/blog/?p=1415)
- [denverquane/automuteus: Discord Bot to automute Among Us players at round transitions, in conjunction with https://github.com/denverquane/amonguscapture](https://github.com/denverquane/automuteus)