BMO Wiki

Welcome & intros 👋

Greet new members with a custom embed, nudge them to post an intro, and quietly say goodbye when they leave — all editable from the dashboard with a live preview.

How the pieces fit

BMO's onboarding is a small pipeline, and every stage is optional:

You can run just the welcome embed, just the intro flow, or both together — if both are on, BMO coordinates them so the intro ping always lands first.

The welcome embed

When someone joins, BMO posts "Welcome, @name!" followed by an embed in your welcome channel. Out of the box the embed shows:

Easiest setup: dashboard → your server → Setup → Welcome and Goodbye. Pick the welcome channel and rules channel with dropdowns, set the three emoji, and edit the text right there. Prefer Discord? Use the command:

CommandWhat it does
/welcomesetWith no options, shows your current welcome settings.
/welcomeset welcome_channel:#welcomeWhere welcome embeds are posted.
/welcomeset rules_channel:#rulesThe channel the "read our Rules" link points to. Without it, the embed says "Please read our rules." with no link.
/welcomeset emoji_1: emoji_2: emoji_3:The three emoji slots. Slot 1 decorates the rules line; slots 2 and 3 decorate the next two lines.
!welcome add #channelShortcut that only sets the welcome channel.
The emoji slots take a custom emoji — paste it as <:name:id> or give the raw emoji ID. It must be an emoji BMO can see (from your server or another server the bot is in), otherwise that slot renders blank.

Customize the text: templates & tokens

The welcome embed's author line, description, footer, and color are templates you can rewrite. The Setup → Welcome and Goodbye page has an embed editor with a live preview — as you type, you see exactly what the embed will look like in Discord before you save. Drop these tokens anywhere in the text and BMO fills them in on the fly:

TokenBecomes
{user_mention}@-mention of the new member
{user_tag}Their username (e.g. cooluser)
{user_id}Their Discord ID
{guild_name}Your server's name
{guild_member_count}Current member count
{rules_line}The whole ready-made rules line: emoji 1 + a clickable Rules link
{rules_channel}A plain #rules channel mention
{rep_command}Your server's rep command (defaults to /aw)
{emoji_1} {emoji_2} {emoji_3}The three welcome emoji slots
Anything that isn't a known token is left untouched, so you can safely write curly braces in normal text. Reset a field to blank in the editor to get the default text back.

Goodbye messages

When a member leaves, BMO can post a farewell embed — by default it's titled "goodbye, name...", lists the roles they had, and notes they were your Nth member. It's a nice pulse check on who you're losing and what roles they held.

Turn it on in Setup → Welcome and Goodbye: flip Goodbye messages enabled and pick a goodbye channel. The goodbye text is a template too, edited on the same page with the same live preview. Its tokens: {user_tag}, {user_mention}, {user_id}, {guild_name}, {role_list} (the roles they had) and {join_position} (they were your Nth member).

BMO checks the audit log when someone disappears — if they were actually banned moments earlier, no goodbye is posted (ban messaging is handled by the moderation module). Bots never get goodbyes either.

The intro flow

Many communities ask newcomers to introduce themselves before really joining the conversation. BMO automates the whole loop: it greets the newcomer with a ping pointing at your intro channel, notices when they post there, and reminds the ones who forgot — without ever nagging twice.

The flow uses two channels:

Set it up on Setup → Intro & onboarding (channel pickers for both channels, plus every knob below), or with one command:

!introsetup #welcome-chat #introductions [@member-role ...]

The emoji in the ping is configurable with /introemoji — give it a custom emoji or ID, or run it bare to see the current one.

Waiting for Discord onboarding

BMO deliberately does not ping the moment someone joins. It waits until the person can actually see your channels:

If you run the classic welcome embed too, it waits for the same gate — and when both messages go to the same channel, the intro ping is posted first and the welcome embed follows a few seconds later, so the order always reads naturally.

Already-established servers: the backfill

Right after setup, BMO scans your intro channel's entire history and marks everyone who already posted an intro, so long-time members are never treated as newcomers. This runs once automatically and can take a few minutes on a big channel; the reminder tools politely refuse to run until it's finished. Re-run it anytime with !introbackfill (full history) or !introbackfill 5000 (newest 5,000 messages).

Intro reminders

Two kinds of nudges, both designed to be impossible to spam with:

Automatic (once, ever). If someone who never posted an intro gets chatty — 5 messages within 5 minutes anywhere in the server — BMO posts one friendly "Quick Reminder" in the intro welcome channel. Each member can only ever receive this once, no matter what.

Manual (you drive). Run /needsintro to get a private, paged list of members who joined a while ago but still have no intro. Each page shows 10 people with a Remind Page button — press it and BMO queues reminders for that page. Queued reminders are then dripped out in small batches instead of flooding your chat:

SettingDefaultWhat it controls
Needs-intro list cutoff2 hoursHow long after joining someone appears on the /needsintro list — brand-new joins are left alone.
Reminders per batch2How many reminders are sent at once.
Batch interval5 minutesHow long BMO waits between batches.

All three live on Setup → Intro & onboarding under Reminders. There's also a built-in 10-minute per-person cooldown, so pressing Remind Page twice won't double-ping anyone, and anyone who posts their intro while queued is silently skipped.

The prefix version !needsintro sends the list to your DMs so you can review it away from the server; the slash version shows it only to you in-channel.

Inactivity kick & safe lists

For servers that prune lurkers: BMO tracks each member's last activity (any message, or joining a voice channel) and can kick people who've been silent past a threshold. Nothing happens automatically — kicks only run when an administrator explicitly confirms them.

CommandWhat it doesNeeds
!statusShows how many members are past the threshold, with a preview of the first 10.Manage Server
!inactivekickLists candidates and asks for confirmation — kicks happen only after you press Confirm Kick.Administrator
!safelist add @user / !safelist add @roleProtects a member or a whole role from inactivity kicks. remove undoes it, !safelist list shows everything.Administrator

The inactivity threshold (in days) and the safe lists are also editable on Setup → Intro & onboarding.

The threshold defaults to 2 days, which is aggressive for most communities — raise it before your first !inactivekick, and check !status to preview who's on the list. Server boosters are always exempt automatically, on top of anything you safelist.

The Members funnel

Everything above feeds the dashboard's Members page, which shows every member's journey through your server as a funnel: when they joined, when they posted their intro, their first message and first voice join, plus last activity, boost date, how they were invited, and whether they've since left. It's the quickest way to see where newcomers stall — lots of joins but few intros means your intro ping or channel placement needs work; lots of intros but few first messages means the conversation isn't pulling people in.

Funnel totals and trends also appear on the Analytics page, and you can get a quick in-Discord version with !activity 7 (1–30 days): a message chart plus joins, leaves, top channels, top members, and trending keywords.

Command quick reference

CommandWhat it doesNeeds
/welcomesetView or set welcome channel, rules channel, and the three emoji slotsManage Server
!welcome add #channelSet the welcome channel onlyManage Server
!introsetup #chat #intros [@role …]Turn on the intro flow (and start the history backfill)Manage Server
/introemojiView or set the emoji used in the intro pingManage Server
!intromingrace secondsDelay between joining and the intro ping (0–3600)Manage Server
!introbackfill [count]Re-scan the intro channel's historyManage Server
/needsintroPaged list of members without an intro, with a Remind Page buttonManage Server
!statusPreview inactivity-kick candidatesManage Server
!inactivekickKick inactive members, with confirmation buttonsAdministrator
!safelist add/remove/listManage inactivity-kick exemptionsAdministrator
!activity [days]Activity summary with chart, joins/leaves, top channels & membersManage Server