v1.2.0
2026-10-21リリース
部屋のサーバーに、運営する人のための管理画面を加えました。部屋や、置かれた画像と音声を見て、困った使いかたをする送信元やアカウントをBANできます。BANで追いつかないときは、すべての人について、部屋を作ることなどを止められます。1つの部屋に置ける量の上限と、置き場所の使用量の知らせも、入れられるようになりました。部屋のGMは、部屋に置いた画像と音声を1つずつ消せるようになり、部屋にいる人は、運営する人に通報できるようになりました。
管理画面
部屋のサーバーにADMIN_DISCORD_IDSを入れると、/adminに管理画面ができます。入るときは、Discordでログインしたうえで、端末のパスキーで確かめます。使えるようにする手順と、画面ごとの使いかたは、管理画面とBANにあります。
- 概要:いま部屋に入っている人の数と、24時間か7日のあいだに置いた画像と音声の件数と大きさ、回数の制限などを出します。目立つ送信元とアカウントも並べます。
- 部屋:いまある部屋と、作った人、入っている人、置いてある画像と音声を見ます。部屋のGMでなくても、部屋を削除できます。作った人が出るのは、この版にしてから作った部屋だけです。
- アップロード:すべての部屋の画像と音声を並べます。1件ずつ中身を見ることと、部屋から消すことができます。中身を見たことは、だれが見たかと一緒に記録に残ります(→ 置かれた画像と音声を見るとき)。
- 通報:部屋にいる人からの通報を並べ、対応済みや却下の印を付けます(下の通報)。
- 記録:ログイン、部屋を作った、画像と音声を置いた、回数の上限を超えた、などを7日・2000件まで残します。運営する人の操作は、別に90日・1000件まで残します。
- BAN:BANの一覧と、BANするための欄です(下のBAN)。
- アカウント:本人に頼まれたときに、DiscordのユーザーIDでアカウントを削除します。
- 安全:緊急停止と、回数の上限を締めること(下の緊急停止と回数の上限)、パスキーの追加と削除、すべての運営する人をログアウトさせることです。
- 設定:いま入っている設定を、読むだけの表で出します。秘密の値は出しません。
「アップロード」の「消して二度と置かせない」は、中身が同じもの(SHA-256が同じもの)を、見つかったすべての部屋から消し、どの部屋にも置けないようにします。読もうとすると451 blockedを返します。Cloudflare版では、データセンターのキャッシュに写しが残っていても、30秒ほどのうちに配らなくなります。権利侵害の申し立てに応えるときの手順は、権利侵害の申し立てに応えるにあります。
BAN
送信元のIPアドレス(とその範囲)か、Discordのアカウントを止めます。期間は、1時間、1日、7日、30日、解除するまでの5つから選びます。BANすると、すべてのインスタンスで、部屋に入る、部屋を作る、画像と音声を置く、ログイン、トークンの更新を止めます。BANに当たる人が部屋に入っていれば、その接続もその場で切ります。BANした送信元には403 bannedを返し、ログインはAxeの戻り先にlogin_error=bannedを付けて戻します。止まるものと止まらないものは、BANで止まるものとBANで止まらないものにあります。
緊急停止と回数の上限
BANでは追いつかないときは、管理画面の「安全」から、すべての人について止めたり、回数の上限を厳しくしたりできます。
- 緊急停止:部屋を作ること、画像と音声を置くこと、新しくログインすることのうち、選んだものを止めます。止めたものには
503 pausedを返し、ログインはAxeの戻り先にlogin_error=pausedを付けて戻します。いま部屋で遊んでいる人は、そのまま続けられます(→ 緊急停止)。 - 回数の上限を締める:送信元ごとの回数の上限を、一時的に、上限ごとに1/2・1/4・1/10へ厳しくします(→ 回数の上限を締める)。
部屋のGMが画像と音声を消す
部屋のGMは、部屋に置いた画像と音声を、部屋を残したまま1つずつ消せるようになりました(→ DELETE /v1/rooms/:roomKey/assets/:sha256)。これまでは、部屋が消えるときに一緒に消えるだけでした。消せるのは、いまGMとして部屋にいる人だけです。Axeから消すには、対応したAxeが要ります。
通報
部屋にいる人(GM・PL・見学)が、部屋の画像か音声、または部屋そのものを、運営する人に通報できるようになりました(→ POST /v1/rooms/:roomKey/reports)。通報は、通報した人と一緒に90日・1000件まで残り、管理画面の「通報」に並びます。1人の通報で、ほかの人の通報が押し出されないよう、同じ人の通報は24時間に20件までです。Axeから通報できるのは、通報に対応したAxeだけです。
新しい設定項目
どれも任意で、入れたときだけ働きます。くわしくは部屋のサーバーの設定項目にあります。
| 項目 | 働き |
|---|---|
ADMIN_DISCORD_IDS | 管理画面に入れる運営する人の、DiscordのユーザーID |
ADMIN_PASSKEY_RESET | すべての端末のパスキーを失くした運営する人が、パスキーを登録し直すあいだだけ入れる |
ADMIN_WEBHOOK_URL | 回数の上限を超えた送信元、管理画面へのログイン、通報などを、DiscordのWebhookに知らせる |
ADMIN_CONTACT_URL | BANや緊急停止で断った人に、Axeが見せる問い合わせ先 |
ROOM_STORAGE_LIMIT_MB | 1つの部屋に置ける画像と音声の合計(MB)。超えるときは413 room-storage-fullで断る |
ADMIN_STORAGE_ALERT_GB | 1日1回、置き場所の使用量を数え、この量(GB)を超えていたら知らせる |
形の合わない値を入れると、設定の誤りとして、部屋のサーバーのすべてのリクエストに500 config-invalidを返します。Cloudflare版を自分のリポジトリから自動でデプロイしているときは、ADMIN_PASSKEY_RESETを除く5つを、GitHub EnvironmentのSecretにも入れられます。入れたものは、デプロイの前に形を確かめ、デプロイのたびにWorkerのシークレットとして入れ直します。
部屋のサーバーが新しく置くもの
部屋のサーバーは、次のものを置くようになりました。ADMIN_DISCORD_IDSを入れていなくても置きます。
- 管理の記録:ログイン、部屋を作った、画像と音声を置いた、回数の上限を超えた、などの時刻と、送信元のIPアドレス、Discordのアカウントと表示名。7日・2000件まで残ります。
- 部屋を作った人:DiscordのアカウントとIPアドレス。部屋が消えるまで残ります。
- 部屋に入っている人:IPアドレスとDiscordのアカウント。部屋を抜けるまで残ります。
- 通報:対象と理由、通報した人のIPアドレス・Discordのアカウント・役割。90日・1000件まで残ります。
一覧は残るものにあります。公開して運営しているときは、プライバシーポリシーにも書いてください(ひな形には書き足してあります)。
この版にするとき
- 部屋のサーバー(Cloudflare版):BANと記録を置くDurable Object(
MODERATION)と、1日1回の定期実行(Cron Trigger)は、デプロイで作られます。用意するものはありません。 - 部屋のサーバー(Vercel版):用意するものはありません。BANと記録は、いま使っているRedisに置きます。
- 管理画面を使うとき:
ADMIN_DISCORD_IDSを入れ、DiscordのアプリのRedirectsに、末尾を/admin/login/callbackにしたURLを足します。置いたらすぐに管理画面を開き、自分のパスキーを登録してください(→ 使えるようにする)。 - プライバシーポリシー:上の部屋のサーバーが新しく置くものを書き足します。
- Axe:そのまま使えます。通報すること、部屋のGMが画像と音声を消すこと、緊急停止や二度と置かせないものを参加者に知らせることは、対応したAxeだけができます。
- SkyWay版のトークン発行とPHP版:v1.1.2と同じです。置いている人がすることはありません。BANは、SkyWay版のトークン発行には効きません。
開発者向けのくわしい変更は、GitHub ReleasesとCHANGELOGを参照してください。