Welcome and member verification
On every arrival, the bot posts a personalised welcome message in the channel chosen by the administrator.
A second, optional mechanism sets a challenge on arrival: the newcomer must react with one specific emoji, drawn at random by the bot, to be granted the access role. Reacting with the wrong one gets them kicked from the server.
The welcome message
The destination channel is chosen in the dashboard, Welcome module. The message is sent as soon as Discord reports the arrival. Bot accounts added to the server are ignored.
Verification by reaction
When verification is enabled, a member's arrival posts a request in the verification channel, addressed to the newcomer by name. The bot states which emoji to react with, then adds that accept emoji and a reject emoji itself.
The accept emoji is drawn at random on each arrival from several, and that is where the filter lies: a script reacting to everything, or one that learned a fixed emoji, lands on the reject one.
Only the person named can trigger the action — the bot compares the reacting user against the request's target and ignores anyone else. Right reaction: the access role is granted and the request deleted. Wrong reaction: the member is kicked from the server.
Until verification happens the member holds no role and sees only what is open to everyone. The server's permission setup remains what actually determines what they can see.
Setting the filter up correctly
- Remove read access to the server's channels from the @everyone role, with the single exception of the verification channel.
- Leave that verification channel visible to everyone, newcomers included: it is where they must react, and making it private would render the module inoperative.
- Create an access role with normal read and write permissions, and designate it in the dashboard.
- Place the bot's role above the access role in the hierarchy, or Discord will refuse to let it grant the role.
- Give the bot the Kick Members permission: a failed verification ends in a kick.