Skip to content

Birthdays

Phantom can wish your members a happy birthday automatically. Members save their own date, and on the day Phantom posts a celebration in a channel you choose — optionally handing out a special "birthday" role for the day.

Phantom birthday announcements settings for a Discord serverEngagement → Birthdays.

How it works

  1. A member saves their birthday with /pme birthday-set.
  2. On that date, in your server's timezone, Phantom posts your birthday message in the announcement channel.
  3. If you've set a birthday role, the member wears it for the day and Phantom takes it back off afterwards.

Each member is celebrated once per year — no repeat posts, even if the bot restarts during the day.

For members

  • /pme birthday-set <date> [hide-year] — save your birthday.
    • 2000-05-15 saves the full date, and your age shows in the announcement.
    • 05-15 saves the day and month only. Your birth year is never stored, so no age can be shown.
    • hide-year: true does the same thing to a full date, which is how you strip the year off a birthday you already saved.
  • /pme birthday-view [user] — see your own saved birthday, or check another member's. Birthdays saved without a year show as just the day and month. This reply is public.

Setup (admins)

Open Dashboard → Community → Birthdays and configure:

SettingWhat it does
EnabledMaster switch for birthday announcements.
Announcement channelWhere birthday messages are posted. Required for announcements to run.
MessageThe birthday message. Supports placeholders (see below).
Birthday roleOptional. A role given to the birthday member for the day and removed automatically afterwards.
Announce hourThe hour of the day (0–23) after which the day's birthdays are posted. Default is 9 (9 AM).
TimezoneThe timezone that decides when "today" starts and when the announce hour lands. Default is UTC.

Make sure Phantom can Send Messages (and Embed Links) in your announcement channel, and — if you use a birthday role — that the role sits below Phantom's highest role so it can be granted.

Message placeholders

Use these in your birthday message and Phantom fills them in:

PlaceholderBecomes
{user}A mention of the birthday member.
{username}Their display name.
{server}Your server's name.
{age}The age they're turning. Blank when the member saved their birthday without a year — write the message so it still reads correctly, e.g. Happy birthday {user}! 🎂.

Only the birthday member is pinged — the message can't be used to mass-mention the server.

Good to know

  • Birthdays are posted shortly after your announce hour, not to the exact second — give it a few minutes.
  • A member born on 29 February is celebrated on the 29th in leap years and on 28 February in other years. This holds for year-less birthdays too.
  • Members who save a birthday without a year are announced exactly like everyone else — the announcement just drops the "turning N" line.
  • The birthday role is removed automatically once the day has passed. If you turn the module off mid-celebration, any leftover birthday role is still cleaned up.
  • If the announcement channel is missing or Phantom can't post there, that member is retried later once it's fixed.

Phantom is a product of Hydra Labs. The bot is run as a managed service; you do not need to host it yourself.