Plugins

Birthdays

Premium
Members register their own birthday; Cloudy celebrates on the day, grants a role, and warns staff a few days ahead.

Members store their birthday themselves with /set-birthday. Once a day Cloudy checks whose birthday it is in the server's timezone, posts a celebration and — optionally — hands out a role for the day.

LicensePremium
NeedsSend Messages and Embed Links, plus Manage Roles if you use the birthday role

Channels & role

Celebration channel

Optional

Where the happy-birthday message is posted. Empty means no public celebration — the plugin then only does the staff reminder and the role, if configured.

Reminder channel

Optional

An internal, staff-facing heads-up a few days before someone's birthday. Point it at a staff channel; the whole point is that the birthday person does not see it.

Use it to organise something: a custom message, a role ping, a small giveaway.

Birthday role

Optional

Granted to the birthday member during the daily check and removed again in the next day's check — so they wear it for the day. Roles managed by an integration cannot be used.

Cloudy's role must sit above the birthday role in Server Settings → Roles, or the grant silently fails. A birthday role usually only carries a colour, so put it low in the list and Cloudy well above it.

Message & timezone

Celebration message

Up to 2000 characters · optional

The celebration is always posted as an embed with the member's avatar. This text is its body; empty uses the built-in 🎂 Happy Birthday, {user}! 🎉 in your server's language.

PlaceholderBecomes
{user}A mention
{age}Age in years — only when the member stored a birth year
{user.name}Display name, no ping
{server}Server name
🎂 Happy birthday {user}! Enjoy your day.
The year is optional when a member registers. If they did not provide one, {age} is left empty in the plain-text message — write it so it still reads correctly without the age, or leave {age} out. In embed mode the token is not blanked out and stays visible as {age}, so only use it there if everyone on your server stores a year.

The celebration can also be a fully designed embed via the embed builder.

Lead time

0–14 days · default 1

How many days ahead the internal staff reminder is sent. 0 switches the reminder off. The reminder is an embed listing everyone whose birthday falls on that day, posted during the same daily check.

Timezone

Pick from the list · default UTC

Decides which calendar day counts as "today" for the daily check. Set it to your community's main timezone — Europe/Berlin, America/New_York, Asia/Tokyo and a handful of others are offered.

The check itself runs once a day at midnight on the bot's clock (UTC), so the celebration lands at a fixed time of day: at 1 or 2 in the morning for a European server, in the evening of the birthday for an American one, in the morning for an Asian one.

Commands

CommandDoes
/set-birthday month day [year]A member stores their own birthday. The year is optional (1900 to the current year) and only used for {age}. The reply is private
/birthday-listToday's birthdays (with age, if known) and the next ten upcoming ones

Privacy

Only day and month are required. The year is optional and used solely for the {age} placeholder. Members set their own data — there is no way for staff to enter a birthday for someone else, by design. There is currently no command to remove a stored birthday either; running /set-birthday again overwrites it.

Resetting the server on Server defaults deletes all stored birthdays.

Behaviour notes

  • One celebration per member per year — changing the date with /set-birthday does not grant a second one in the same year (a date that has not been celebrated yet this year still is).
  • 29 February birthdays are celebrated on 28 February in non-leap years.
  • A stored birthday is not removed when the member leaves. The role is skipped for members who are gone, but the celebration is still posted for the stored entry.
  • Changing the timezone shifts future checks; anything already posted today stays posted.