Verification gate
Hold new members behind a check before they get access, and kick the ones who never complete it.
Turn the gate on
Open Configuration, Verification and switch on "Require new members to verify". Pick an unverified role, then go into your server role settings and take that role's access away from your normal channels. That role is what actually holds people back; Nighthawk applies it on join and keeps your welcome roles back until the member is through. Without the channel restrictions the gate still tracks and kicks people, it just does not hide anything from them.
Pick a method
There are four. Captcha DMs a one-time link to a captcha check on the Nighthawk site. Reaction panel posts a message in a channel you choose and members click the emoji on it. Text code DMs a short code the member replies with, and Image code sends the same thing as a distorted picture so simple bots cannot read it. Captcha is the recommended one, and it is the only method that stops a bot capable of solving the others.
Captcha links
The bot DMs the member a link with a random one-time token in it. Opening it shows the captcha, and passing it tells Nighthawk to grant the roles on its next sweep, usually within a minute. There is no sign-in step: the link arrived in that member's DMs, which already proves whose account it is. Links stop working once they are used and expire with the kick timer, so a forwarded one is no use for long.
The reaction panel
Choose a panel channel and Nighthawk posts the panel itself, then keeps it correct: it re-adds its own reaction if that goes missing and posts a new panel if someone deletes the old one. Write your own message and embed under Verification panel, or leave both empty for the default line, and set the panel emoji to whatever members should click. If the channel has drifted, "Repost panel" clears the bot's own messages out of it and posts a fresh one. This is the only method that needs a channel, and the unverified role has to be able to see that channel for it to work.
Codes are answered in DMs
For text and image codes the member replies to the bot's DM with the code. Nothing is typed in your server, so you do not need a channel for it, wrong guesses never end up in front of anyone, and the code cannot be copied by someone watching the channel. Codes are not case sensitive and the alphabet leaves out characters that look alike, so nobody is locked out by an O that was really a zero.
The kick timer
Set how many minutes a member has before Nighthawk kicks them for not verifying. The default is 15. Set it to 0 and nobody is ever kicked, which suits a quiet community where the gate is more about slowing bots down than clearing them out. Kicks are written as normal cases, so a member who was kicked by the gate has the same history as anyone else. Kicked members can rejoin and get a fresh code or link.
Watch what the gate is doing
Bind a channel to the Verification log category under Configuration, Channels & logging. You get a line when someone passes, a line when someone sends the wrong code, and a line when someone is kicked for running out of time. Every third wrong code from the same person, and every third kick, is logged as a repeat instead, which is usually the first sign that something automated is hammering the gate. n!verify status shows the current settings and how many members are waiting, n!verify verify <user> lets a moderator wave someone through by hand, and n!verify reset <user> clears a stuck record.