Two independent messages: one when someone joins, one when someone leaves. Each has its own channel and its own content, and either can be left unconfigured.
| License | Free — no premium needed |
| Tabs | Welcome · Goodbye |
| Needs | Send Messages and Embed Links in the target channels, plus the Server Members intent |
Optional
Where the greeting is posted. The channel must allow Cloudy to Send Messages. Leave it empty and no welcome message is posted at all, whatever the text says.
Up to 2000 characters
Posted when a member joins. Supports Markdown and these placeholders:
| Placeholder | Becomes |
|---|---|
{user} | A mention — pings the new member |
{user.name} | Display name, no ping |
{username} | Discord username |
{user.tag} | Full tag |
{user.id} | Numeric user id |
{server} | Server name |
{server.memberCount} | Current member count |
Welcome {user} — you are member #{server.memberCount}!
Read #rules, then say hi in #general.
Above the editor is a switch between Plain text and Embed. Embed mode gives you the full embed builder with a live preview; switching to it seeds the embed from your plain text so you never start empty.
Switching back to plain text keeps your text. Internally an empty embed is text mode — there is no third state.
Optional
Where the goodbye message is posted. Often a staff-only channel — a public "X has left" line every time someone quits gets old fast.
Up to 2000 characters
Same placeholders as the welcome text, with one important difference:
{user} renders as the plain name, not a mention. The member has already left the server, so a
mention would point at nobody and Discord would render a raw id.{user} left the server. We are now {server.memberCount} members.
Goodbye also supports embed mode, with its own independent design.
If you need to tell kicks from voluntary leaves, enable the Mod actions category in Moderation logging.
Without it, Discord never tells the bot about joins and leaves. The hosted Cloudy bot has it enabled. If you run a custom bot, you must switch it on yourself — this plugin is the first thing that breaks when you forget.
Cloudy needs Send Messages and, for embeds, Embed Links in the target channel. A channel the bot cannot post in produces no message and no error anywhere visible.
Both messages are gated by the plugin's master switch. Configured but disabled posts nothing.