Skip to main content
The join gate checks every new member as they arrive and stops the ones that look like throwaway or raid accounts. Members who pass are never interrupted.
Every joingate command needs Administrator, and Bloom needs Kick Members, Ban Members, and Moderate Members.

How a join is checked

1

Bloom runs your checks

Account age, missing avatar, default avatar, and username, in that order. Bots skip the gate entirely, and so does anyone on the whitelist.
2

Passing members are let in

If nothing fails, the member joins normally with no captcha and no message.
3

Failing members are stopped

With captcha off, the member is kicked or banned and told why. With captcha on, they are timed out and sent a code in a direct message instead, so a real person can still get in.
4

The clock runs out

A member who never solves the captcha is kicked or banned when their time expires.
Turning on the captcha alone does nothing. It only triggers for members who fail one of the checks, so you must enable at least one check for the gate to do any work.

Defaults

Quick start

1

Pick your checks

!joingate newaccount 7d turns away accounts made in the last week. It is the single most effective check against throwaway accounts.
2

Add the captcha

!joingate captcha on gives anyone who trips a check the chance to prove they are human instead of being removed outright.
3

Turn the gate on

!joingate enable. Bloom replies Joingate has been enabled. Nothing is checked until you do this.
4

Review it

!joingate shows every setting and how many members are whitelisted.

The checks

Administrator
Rejects accounts younger than the age you set. Also accountage, age.
  • Takes a duration such as 7d, 24h, or 1w.
  • !joingate newaccount 7d replies Minimum account age set to 7 days.
  • off removes the requirement.
Administrator
Rejects accounts with no profile picture at all.
Administrator
Rejects accounts still using one of Discord’s default avatars. Also default. This covers everything noavatar does.
Administrator
Rejects accounts whose username or display name looks like advertising, such as an invite link, a web address, a free-Nitro pitch, or heavy character stacking. Also name.

Settings

Administrator
What happens to a member who fails, or who never solves the captcha. Also punish, action. The default is kick, which lets someone return once they fix the problem.
Administrator
How long a member has to solve the captcha. They are timed out for this whole period, so they cannot talk until they verify. Also time, wait.
  • Minimum 5 minutes, maximum 7 days. The default is 1 hour.
Administrator
What to do when Bloom cannot send the captcha because the member has direct messages closed.
  • punish removes them, the default.
  • skip lets them in without verifying.
Many people keep direct messages from strangers turned off, so punish will turn away real members. If your server is not under active attack, skip is the friendlier setting.

Letting people through

Administrator
Members on the whitelist skip every check. Also wl. Takes a mention or a user ID.
  • !joingate whitelist add @Someone replies that they were added.
  • !joingate whitelist list shows everyone exempt.
Administrator
Verifies a member yourself. Bloom clears their pending captcha and lifts the timeout, so they can chat right away. Use it when someone cannot receive the code.
Administrator
Run !joingate on its own, or !joingate settings, to see the gate’s status, each check, the punishment, the captcha time, and the whitelist count. Also config, status.
Administrator
Puts every join gate setting back to its default, which also turns the gate off.

What the member sees

A member who fails a check with the captcha enabled gets a direct message naming the reason, an image with a code, and how long they have. They reply with the code to be let in, and Bloom answers Verified! Welcome to <server>. and lifts their timeout.
  • The code ignores capitals.
  • A wrong answer can be tried again as often as they like within the time limit.
  • Replying new or refresh sends a fresh code.
With the captcha disabled, they are told why they cannot join and are removed immediately.

Troubleshooting

Run !joingate. The status must be Enabled and at least one check must be On. A gate that is enabled with every check off lets everyone through.
The usual cause is dmfail punish combined with the captcha, which removes anyone who cannot receive a direct message. Switch to !joingate dmfail skip, or lower your account age requirement.
They have direct messages from server members turned off. Have them enable it in Privacy Settings for your server and rejoin, or run !joingate verify @them to let them in by hand.
Bloom lifts the timeout itself when the code is accepted. If it could not, it tells the member to contact a moderator, which normally means Bloom’s role is below theirs. Move Bloom’s role up and clear the timeout with !untimeout.
Bots are not checked by the join gate. Bot additions are handled by anti-nuke instead.

Welcome messages

The public greeting, which only fires once a member is past the gate.

Bans, kicks, and timeouts

The actions the gate applies, and how to reverse one.

Durations and time zones

The format for the account age and captcha time.

Event logging

Record joins and leaves in a staff channel.