Discordのサーバーで長時間ボイスチャットを使っていると、寝落ちした人だけが朝まで残ってしまうことがあります。管理者が毎回手動で切断するのは手間なので、「8時間経過したら自動的にボイスチャットから退出させたい」「一定時間何もしていない人を自動で切断したい」と考えることもあるでしょう。
Discordには標準機能として、一定時間離席しているメンバーを指定したAFK用ボイスチャンネルへ移動させる「非アクティブチャンネル(AFKチャンネル)」の仕組みがあります。しかし、標準のAFK機能は基本的に別チャンネルへ移動させる機能であり、指定時間後にボイスチャットから完全退出させる機能ではありません。
一方、DiscordのAPIには管理権限を持つBotがユーザーをボイスチャンネルから切断する仕組みが用意されています。そのため、「入室から8時間で切断」「一定条件を満たしたメンバーを自動切断」といった運用は、対応するBotを導入するか自作Botを用意すれば実現可能です。
この記事では、Discord標準のAFK機能でできること・できないこと、AFK Botなどを使う場合の考え方、「8時間経過」と「無操作」を区別する必要性、安全に自動退出を設定するポイントまで解説します。
- 結論:Discord標準機能ではAFKチャンネルへの自動移動はできるが、自動退出はできない
- Discord標準のAFKチャンネルとは?
- AFKタイムアウトは「8時間後に全員を切るタイマー」とは違う
- 「8時間で自動退出」と「無操作で自動退出」は別の機能
- Botを使えばボイスチャットから強制的に退出させることは可能
- Discordの「Disconnect」とサーバーからの「Kick」は違う
- AFK Botにはボイスチャットから切断する機能もある
- 「8時間で必ず切断」なら滞在時間ベースの機能が分かりやすい
- 寝落ちした人だけ切断したい場合は少し難しい
- おすすめは「AFKへ移動→さらに一定時間後に切断」の2段階
- Discordの「タイムアウト」機能では代用できない
- Botへ必要以上の権限を与えない
- 自作Botなら「8時間後に切断」も実装できる
- 8時間経過前にBotが再起動した場合にも注意
- 寝落ち対策ならどの方法が良い?
- 「ミーティングを8時間で終了」と「各ユーザーを切断」も分けて考える
- まとめ:標準AFKは「移動」まで、自動退出にはBotが必要
結論:Discord標準機能ではAFKチャンネルへの自動移動はできるが、自動退出はできない
Discordサーバーには、一定時間非アクティブになったユーザーを指定したボイスチャンネルへ自動的に移動させるAFK機能があります。サーバー設定でAFK用のチャンネルとタイムアウト時間を指定して利用する仕組みです。
ただし、この機能の目的は「離席者を通常のボイスチャンネルからAFKチャンネルへ移動すること」です。AFKチャンネルへ移された後、さらに一定時間が経過したらDiscordが自動的にその人をボイスチャットから切断する、という標準設定はありません。
Discordのコミュニティページでも、AFKチャンネルに一定時間いたユーザーを自動切断する機能は追加要望として投稿されています。つまり、「AFKへ移動」と「ボイス接続そのものを切る」は別の処理として考える必要があります。
[参照] Discord Community「Auto kick people in afk channel after set amount of time」
Discord標準のAFKチャンネルとは?
AFKは「Away From Keyboard」の略で、日本語では「離席中」に近い意味です。Discordでは、一定時間操作していないと判断されたユーザーを、サーバー管理者が指定したボイスチャンネルへ移動させる運用ができます。
たとえば「雑談」というボイスチャンネルで会話していた人が寝落ちした場合、一定時間後に「AFK」「離席中」といった専用チャンネルへ移動させる設定です。
これによって、通常の雑談チャンネルに寝落ちした人がずっと残る状態は減らせます。ただし接続自体は続いているため、「サーバーのボイスチャットから完全に退出させたい」という目的には十分ではありません。
AFKタイムアウトは「8時間後に全員を切るタイマー」とは違う
ここで注意したいのは、AFKタイムアウトと「入室してから○時間」という経過時間タイマーは別物だということです。
AFK機能は、ユーザーが非アクティブになっていることを基準として扱われます。そのため、「20時に入室した人を、活動していても翌朝4時になったら必ず切る」という8時間制限とは仕組みが違います。
反対に、8時間ずっと会話や操作をしている人であっても強制的に終了させたいのであれば、「ボイスチャンネルに入ってからの経過時間」を計測できるBotが必要になります。
「8時間で自動退出」と「無操作で自動退出」は別の機能
自動退出Botを選ぶ際には、何を基準として切断したいのかを明確にしておく必要があります。
| やりたいこと | 必要な判定 | Discord標準機能 |
|---|---|---|
| 一定時間離席した人を別部屋へ移す | AFK・非アクティブ判定 | 対応 |
| AFKチャンネルから完全退出させる | AFK後の追加処理 | 標準では非対応 |
| 入室から8時間経ったら退出させる | 入室時刻からの経過時間 | 標準では非対応 |
| 一定時間無操作なら退出させる | アクティビティの判定 | AFK移動は可能だが直接切断は標準では非対応 |
「寝落ち対策」が目的ならAFK判定、「どれだけ活動していても8時間で終了」が目的なら滞在時間の計測が必要です。この違いを理解してBotを選ぶと失敗しにくくなります。
Botを使えばボイスチャットから強制的に退出させることは可能
Discordの公式開発者向けドキュメントでは、Botなどがサーバーメンバーのボイス状態を変更できるAPIが用意されています。「Modify Guild Member」でボイスチャンネルのchannel_idをnullにすると、対象ユーザーをボイスから強制的に切断できることが明記されています。
[参照] Discord Developer Documentation「Modify Guild Member」
そのため、Discordの仕様上「Botでは退出させられない」というわけではありません。適切な権限を与えたBotであれば、条件を監視してユーザーを自動切断する仕組みを作れます。
Discord公式ドキュメントでは、このようなメンバー移動・切断に関係する権限として「MOVE_MEMBERS」が定義されています。
[参照] Discord Developer Documentation「Permissions」
Discordの「Disconnect」とサーバーからの「Kick」は違う
「退出させる」という言葉には注意が必要です。寝落ちしている人をボイスチャットから外したいだけなら、必要なのはDiscordサーバーそのものからのKickではなく、ボイスチャンネルからのDisconnect(切断)です。
Discordの管理機能では、適切な権限を持つ管理者がボイスチャンネル内のユーザーをDisconnectできます。この操作をするとユーザーは音声通話から外れますが、Discordサーバーのメンバーではなくなるわけではありません。
[参照] Discord「Permissions on Discord」
寝落ち対策のBotでも、基本的にはこの「ボイスから切断する」という処理を使うのが適切です。サーバーからメンバーそのものをKickする必要はありません。
AFK Botにはボイスチャットから切断する機能もある
「AFK Bot」という名前のBotについて調べる場合は、同じような名称のBotや自作プロジェクトが複数存在するため、どのBotを指しているか確認する必要があります。
少なくとも「AFK Bot」が公開している2025年1月の案内では、「Voice Chat Disconnect」という機能が追加され、ボイスチャンネルへ参加してからの経過時間を基準にメンバーを切断できると説明されています。
公開情報では時間を1分から1か月の範囲で指定でき、ユーザーがボイスチャンネルへ入った時点から時間を計測し、条件に達したユーザーをBotが切断する仕組みとされています。また、Bot側には「Move Members」の権限が必要と説明されています。
[参照] AFK Bot「New Feature: Voice Chat Disconnect」
したがって、現在のAFK Botを指しているのであれば、「AFKチャンネルへ移動するだけで、退出させることは一切できない」とは限りません。導入時点の最新機能・無料/有料条件・対象チャンネル数などを公式のダッシュボードや案内で確認する必要があります。
「8時間で必ず切断」なら滞在時間ベースの機能が分かりやすい
たとえば毎日22時ごろから雑談を始め、寝落ちして翌朝まで接続したままになることを防ぎたいとします。
この場合、「入室後8時間で切断」という設定にすれば、22時に入ったユーザーは翌朝6時ごろに自動切断されます。途中で会話しているか、寝ているかを判断する必要がないため、動作は単純です。
ただし、本当に長時間イベントやゲームをしている人も8時間になれば切れてしまいます。そのため、イベント用チャンネルは除外する、制限時間を長めにするなどの工夫が必要です。
寝落ちした人だけ切断したい場合は少し難しい
「8時間経った全員」ではなく「寝落ちした人だけ」を正確に判定するのは、単純なタイマーより難しくなります。
たとえばマイクをミュートしているからといって寝ているとは限りません。ゲーム中、動画視聴中、他の人の話を聞いているだけ、食事中などでも長時間発言しないことがあります。
さらに、Discordでステータスが「退席中」になることと、実際に眠っていることも同じではありません。Discord公式でも、一定時間AFKになると自動的にアイドル状態へ切り替わる仕組みが説明されています。
[参照] Discord Support「Changing Online Status」
したがって「発言がない」「マウス操作がない」「ミュート中」といった条件だけで睡眠を断定するのではなく、サーバーの運用に合う基準を設定することが重要です。
おすすめは「AFKへ移動→さらに一定時間後に切断」の2段階
寝落ち対策として使いやすいのは、いきなり切断するのではなく2段階にする方法です。
たとえば「一定時間非アクティブになったらDiscord標準機能でAFKチャンネルへ移動」「AFKチャンネルへ移動してからさらに一定時間経過したらBotで切断」という形です。
この方法なら、少し席を離れただけの人がすぐ切断されることを防ぎつつ、朝までAFKチャンネルへ残り続ける問題も減らせます。
ただし、導入するBotが「AFKチャンネルに入ってからの経過時間」を条件にできるか、「ボイスチャンネルへ最初に参加してからの時間」しか計測できないかはBotごとに異なります。導入前に仕様を確認してください。
Discordの「タイムアウト」機能では代用できない
Discordにはメンバーを「タイムアウト」する管理機能もありますが、これは今回のような寝落ち対策とは用途が違います。
Discord公式ヘルプによると、タイムアウトされたユーザーはメッセージ送信やリアクションなどが制限され、ボイスチャンネルやビデオ通話への参加もできなくなります。
[参照] Discord Support「Time Out FAQ」
これはルール違反などに対するモデレーション機能です。「寝落ちしたので通話から外す」ためだけにタイムアウトをかけると、その人が起きた後もチャットやボイス参加を制限してしまうため、通常はDisconnectのほうが目的に合います。
Botへ必要以上の権限を与えない
自動切断Botを導入するときは、便利さだけでなく権限にも注意してください。
Discord公式では、ボイスチャンネル内のメンバーを移動させる「MOVE_MEMBERS」権限が定義されています。Botが自動切断を行うには、このような権限が必要になります。
一方、寝落ちユーザーを切断するだけのBotに、サーバー管理者権限やメッセージ削除、BANなど目的と関係のない強力な権限まで与える必要があるのかは慎重に確認したほうがよいでしょう。
Botを追加するときは、開発元、導入実績、必要権限、プライバシーポリシー、現在もメンテナンスされているかを確認することが大切です。
自作Botなら「8時間後に切断」も実装できる
既存Botの設定が目的に合わない場合は、Discord Botを自作する方法もあります。
たとえばユーザーがボイスチャンネルへ参加した時刻を記録し、定期的に現在時刻との差を確認します。8時間を超えたらDiscord APIを利用して、そのメンバーのvoice channel_idをnullへ変更すればボイスから切断できます。
Discord公式APIがこの切断処理をサポートしているため、仕組みそのものは実現可能です。
ただし、自作Botではサーバー上でBotを常時稼働させる環境、エラー処理、再起動時のタイマー復元、権限管理なども必要になるため、プログラミング経験がなければ既存の信頼できるBotを利用するほうが簡単です。
8時間経過前にBotが再起動した場合にも注意
自動退出Botの仕組みによっては、Botが再起動すると「何時間そのユーザーがボイスチャンネルにいたか」という記録が消えることがあります。
たとえば6時間滞在したところでBotが再起動し、その時点から再び0時間として計測されれば、実際には14時間接続してから切断されることになります。
既存Botを導入する場合は、タイマーが再起動後も維持されるのか、何分おきに確認するのか、チャンネル移動で時間がリセットされるのかなども確認すると確実です。
寝落ち対策ならどの方法が良い?
目的ごとに整理すると、選びやすくなります。
| 目的 | おすすめ方法 |
|---|---|
| 寝落ちした人を通常VCからどかしたい | Discord標準のAFKチャンネル |
| 寝落ちした人を最終的にボイスから完全退出させたい | AFK機能+自動切断Bot |
| 誰でも入室から8時間で必ず切断したい | 滞在時間を指定できるBot |
| 特定チャンネルだけ8時間制限したい | チャンネル指定に対応するBot |
| 細かい独自ルールを作りたい | Discord APIを利用した自作Bot |
特に寝落ち対策だけなら、まずDiscord標準のAFKチャンネルを使ってみて、それでもAFK部屋へ人が残り続けることが問題になる場合に自動切断Botを追加するのが分かりやすいでしょう。
「ミーティングを8時間で終了」と「各ユーザーを切断」も分けて考える
Discordの通常のボイスチャンネルは、一般的なWeb会議サービスの「主催者が会議を終了すると全員のミーティングが終了する」という考え方とは少し異なります。
通常のボイスチャンネルは、ユーザーが自由に参加・退出する常設の部屋として使われます。そのため、「作成された会議そのものを8時間後に終了する」というより、Botがそこにいるユーザーを個別に切断する、または一時的なボイスチャンネル自体を削除する、といった処理になります。
一時VCを自動生成するBotを利用している場合は、誰もいなくなったらチャンネルを自動削除する機能を持つものもあります。これは寝落ちユーザーの自動切断とは別機能なので、組み合わせて運用することもできます。
まとめ:標準AFKは「移動」まで、自動退出にはBotが必要
Discordには、一定時間非アクティブになったメンバーをAFK用のボイスチャンネルへ自動的に移動させる仕組みがあります。しかし、Discord標準機能だけで「AFKになってから一定時間後に完全退出」「入室から8時間で強制切断」と設定する機能はありません。
一方、Discord公式APIでは、適切な「Move Members」権限を持つBotがメンバーをボイスチャンネルから切断できます。そのため、自動退出そのものは技術的に可能で、対応Botを使えば管理者が毎回手動で寝落ちユーザーを切断する必要を減らせます。
AFK Botについても、現在公開されている案内には、ボイスチャンネルへの滞在時間を基準としてユーザーをDisconnectする「Voice Chat Disconnect」機能があります。過去に調べた情報では「AFKチャンネルへ移動するだけ」だったとしても、Botの機能は更新されるため、現在の設定画面や料金条件を確認するのがおすすめです。
単純に「8時間経ったら全員切断」でよければ、滞在時間ベースの自動切断が最も分かりやすい方法です。寝落ちした人だけを対象にしたいのであれば、「Discord標準AFKで離席者を専用チャンネルへ移動→さらにBotで一定時間後に切断」という2段階運用が扱いやすいでしょう。
なお、Discordの「タイムアウト」はモデレーション用の別機能であり、寝落ちユーザーをボイスから外すためのDisconnectとは異なります。目的に合った機能を選び、Botには必要以上の権限を与えないことも大切です。
[参照] Discord Developer Documentation「Modify Guild Member」
[参照] Discord Developer Documentation「Permissions」
[参照] AFK Bot「Voice Chat Disconnect」


コメント