Skip to content
LaunchMyServer

How to hide channels until someone accepts the rules on Discord

Updated · Moderation

Deny View Channel for @everyone on every category except #welcome and #rules, allow it for a 'Member' role, then grant that role when someone accepts the rules: natively through an Onboarding question that assigns the role, or with a bot (button or reaction role) in #rules. Native Rules Screening alone stops people from chatting, but it does not hide channels.

Native rules acceptance vs verification role bot
ApproachHides channels?Needs a bot?Setup effortBest for
Rules Screening (rules acceptance)No, blocks chatting onlyNoLowLight gating in public servers
Onboarding question that grants Member roleYes, if channels are role-gatedNoMediumCommunity servers that want native setup
Reaction role in #rulesYesYes (e.g. Carl-bot)LowAny server, simple 'react to agree'
Button verification / CAPTCHA botYesYesMediumPublic servers with spam problems
Paid role (Whop/LaunchPass)YesYes (platform bot)MediumPaid communities

Step 1: Lock the channels

  1. Create a role called Member (no special permissions needed).
  2. For each category except Start Here: Edit Category > Permissions > @everyone: deny View Channel; Member: allow View Channel.
  3. Sync channels to the category so they inherit the rule.
  4. In #welcome and #rules: @everyone can view but not send messages.
  5. Check with a test account; remember Administrator bypasses overrides, so don't test as admin.

Step 2a: Native route with Onboarding

On a Community server, open Onboarding and add a required question like 'Do you agree to the rules?' with one answer, 'I agree', that assigns the Member role. Also turn on rules acceptance in Safety Setup so members must agree before chatting.

Onboarding requires a minimum number of default channels visible to @everyone, so you may need to keep a few public channels (welcome, rules, announcements, introductions) and gate the rest behind Member. Full walkthrough: Discord onboarding setup.

Step 2b: Bot route with a verification role

See reaction roles setup for details.

  1. Invite a reaction-role or verification bot (for example Carl-bot).
  2. Make sure the bot's role is above the Member role in Server Settings > Roles.
  3. In #rules, use the bot's dashboard or setup command to post a message with a button or reaction that gives Member.
  4. Optional: have the bot remove an 'Unverified' role at the same time if you use one.

Which should you use?

Use Onboarding if you're already a Community server and want fewer bots; it also lets new members pick interest roles in the same flow. Use a bot if you aren't a Community server, want every channel hidden, or need a CAPTCHA against spam. For paid communities, the payment role is the gate, and #rules just needs to be read. Compare both in onboarding vs verification bot.

Quick answers

how to hide channels until someone accepts the rules discord
Deny View Channel for @everyone on your main categories, allow it for a Member role, and grant Member when people accept the rules via an Onboarding question or a bot button/reaction in #rules.
discord onboarding vs verification bot which is better
Onboarding is native and also handles interest roles, but needs Community and some public default channels. A bot can hide everything and add CAPTCHA, but it is one more thing to maintain.
discord private channel still visible to everyone how to fix
Check that @everyone has View Channel denied on the channel or its category, that the channel is synced to the category, and that you aren't testing with an Administrator account.
Does Discord's rules screening hide channels?
No. Rules acceptance prevents new members from talking or reacting until they agree, but they can still see channels @everyone can see. Hide channels with permissions and a role.

What to do next

Our templates come with the Start Here category, Member role and permission overrides already set, so gating works the moment you import it.

Related guides

Sources

Checked: . Discord changes features and menus often; if something looks different, the official help center is the source of truth. LaunchMyServer is not affiliated with Discord.