Discord has a built-in place to park idle members. Its official name is the Inactive Channel, but most people call it the AFK channel. Creating one takes two steps — make a voice channel, then set it as the Inactive Channel — and only members with the Manage Server permission can do it. It is a one-time, server-wide setting.
With that set, Discord moves members it considers away to the Inactive Channel once the timeout passes. A moved member can't talk there, and has to move back to their old channel themselves. All of that works fine. The problem is how Discord decides someone is away.
What Discord looks at is idle status — on the desktop app, roughly a stretch with no keyboard or mouse input. So someone who has really walked away gets caught, but someone who keeps playing with headphones off and just isn't listening does not. In a voice channel, that second kind is the awkward one: you think five people are in the call, and only two are actually hearing you. If you have set up an AFK channel and the idle members still don't go away, this difference is usually why.
There is also the fact that the built-in feature only moves people and counts nothing. Discord doesn't keep a record of who was active or how long someone was idle. If you want an activity ranking or tiers, the counting has to come from somewhere else.
To automate this, you first have to define 'idle' as a signal a bot can actually see. A bot can't tell whether someone is quiet — no 'someone spoke' event reaches it. Hearing speech directly would mean the bot sitting inside the voice channel, where it can join only one channel per server and the cost is high, so that isn't realistic. What the bot reliably knows is voice state: whether your mic and your headphones are on.
So it makes sense to treat three states separately. Someone with only the mic muted is still listening and can respond when called, so they count as half idle. Someone with headphones off as well is completely out of the conversation, so they count as idle. Someone alone in a channel isn't so much idle as not spending time together, so that time is not counted at all. A member muted or deafened by a server admin is treated the same as one who did it themselves.
The upside of this definition is that the same rule applies to everyone, and each person can undo it any time: the moment you turn your headphones back on, you are no longer idle. That is far less unfair than an admin eyeballing who seems active and moving people or cutting their points.
An AFK bot does something simple: once the definition is in place, the rest is a single clock. It measures how long someone has stayed in the same channel with headphones off, and when the limit passes it moves them to the server's AFK channel. It covers the group Discord's built-in feature can't see, so you can keep both on without them getting in each other's way.
Warning people first matters. At 20 minutes the bot sends a DM saying they are about to be moved, and turning headphones back on resets the clock to zero, so they stay put. At 30 minutes it moves them. Afterwards, a DM tells them how to get back: a link to their original room if it still exists, or how to open a new one if it has been cleaned up. It does not move them back automatically. If people who did nothing keep getting shuffled around by a bot, sooner or later someone asks you to turn the feature off.
Places the bot must not move people from are excluded from the start: the team voice channel of an in-house match in progress, trigger channels that create a new room when joined, operator alt accounts excluded from counting, and the AFK channel itself. If the last person left alone in a temporary channel is moved, that room is empty and gets cleaned up. That is intended, since it only tidies a room where the one person left has been away for 30 minutes.
This is the question servers that run an activity ranking ask most. The answer is: no effect. Time spent in the AFK channel was never counted in the first place. And the time spent with headphones off before the move counts at 0×, so it was not piling up anyway. Being moved costs you nothing, and not being moved gains you nothing.
Time with only the mic muted counts at 0.5×, because zeroing out a listener's time would be unfair to quieter members. Time alone in a channel is not counted. Put those three together and what is left is just time spent in a call with other people, listening — and that is what ranks and tiers are built from.
Kletoi's AFK auto-move uses exactly the rules above. It is off by default and an admin has to turn it on. Because it moves people by force, it never runs on a server that has not opted in. To turn it on, the server needs an AFK channel set and the bot needs the Move Members permission; if either is missing it will not switch on, and it tells you why. If, after it is on, the bot can't connect to that channel or move members, it tells the report channel (or the system messages channel if there is none). Auto-move never creates the AFK channel on its own, because a bot rearranging your server structure unasked is risky. However, in the web console's 'Guided setup', an admin can press 'Create and set' in the AFK step to create an AFK channel and set it right away.
In the web console's settings page, turn on the 'AFK auto-move' switch. If your server has no trigger channel yet, the console first sends you to 'Guided setup', and once you have picked a trigger the settings page opens. From Discord you can always use /admin enable-afk-move (command names follow your Discord display language). After you turn it on there is a grace period of at least 30 minutes, so nobody gets pulled out the moment you flip the switch.
The warning and move DMs can be turned off server-wide with the 'AFK warning DM' switch. A member who has turned off 'Reminders & nudges' DMs won't get them either. Moves are recorded in the audit log, so you can check later why a room disappeared.
First, separate the two cases: Discord moving someone, and a bot moving someone. Discord's built-in feature only works if the server has an Inactive Channel set, and only after the member has been away for the time you chose. Start by checking that the Inactive Channel is really set and that the timeout is not too long.
When Kletoi's AFK auto-move does not work, check five things: the 'AFK auto-move' switch in the web console is on, the server has an Inactive Channel set, the bot has the Connect and Move Members permissions for that channel, the member was in the same channel with headphones off (not just the mic) for at least 30 minutes, and the channel is not one of the places the bot skips. It skips the team voice channel of an in-house match in progress, trigger channels that create a new room when joined, and the AFK channel itself, and it does not move bots or accounts you excluded from counting. If it can't move someone because of permissions, it tells the report channel (or the system messages channel if there is none).
We have not been able to confirm how Discord decides someone is away on the mobile app. Kletoi's AFK auto-move only looks at voice state — whether your headphones (deafen) are off — regardless of device, so the rule is the same on PC and on mobile.
Discord's timeout is based on the away state described above, not on how long you have been connected, so any input at all may keep someone from being moved when you expect. We have not been able to confirm which inputs it ignores. If you need a clear rule, a bot that measures how long headphones stay off is easier to predict, and running both together does not cause conflicts.
The AFK channel is a waiting room where nobody can talk. If you were moved there, check the channel name and go back to your original voice channel yourself. If you had been using it as a regular talking channel, it is blocked because it is set as the server's Inactive Channel, so use a different channel for talking.
If the bot moved you, the DM has a link back, and clicking it takes you to your original channel. If that room was a temporary channel and has been cleaned up, the DM instead says that joining the trigger channel creates a new room. The bot does not move you back on its own. A guide written for members is in 'Why Discord Moved You to the AFK Channel and How to Get Back'.
Turn off the 'AFK auto-move' switch in the web console's settings, or use the slash command /admin disable-afk-move (command names follow your Discord display language). Once it is off, nobody is moved automatically anymore. If you only want to stop the warning and move DMs, turn off the 'AFK warning DM' switch. In that case only the DMs disappear and the moves continue.
The bot handles all of the above. Add it to your server, pick one channel, and you are ready to go.
← All articles