🎂 BIRTHDAY

Nobody forgets a birthday again.

Users register their date privately via slash command or panel button. The bot congratulates automatically at the configured time in the server timezone — using the same canvas editor as Welcome cards. Optionally the user receives a birthday role for 24 hours that's automatically removed afterwards.

What {title} can do

Private registration via slash command

/geburtstag set opens a modal — DD.MM is required, year is optional. /geburtstag remove and /geburtstag info @user round out the user-facing commands.

Panel with registration button

/geburtstag panel posts a persistent embed with a 🎂 button. Click opens the same modal — perfect for a 'birthdays' channel.

Timezone & time per server

Default: 00:00 Europe/Berlin. Free choice of IANA timezone and minute-precise time. The worker scans every minute and fires on time in the server's TZ.

Canvas card identical to Welcome

marketing.features.birthday.cap_4_desc

Automatic 24h role

Optional: when the bot congratulates, a configurable role is granted and removed exactly 24h later. Idempotent against bot restarts and permission flaps.

Dashboard management

Four tabs: Overview (today/upcoming/month), Entries (table with search and month filter), Add (member picker via Discord search), Settings (channel/TZ/role/canvas).

In detail

Privacy: year is optional

marketing.features.birthday.sec_1_body

Leap-year handling

Users born on February 29 are celebrated on February 28 in non-leap years (matches German § 187a BGB). In leap years like 2024 or 2028 the congratulation runs on February 29 as expected.

Admin workflow in dashboard

Admins can register entries on behalf of other users — the MemberPicker searches Discord members in @-mention style. Admins may edit or delete any entry at any time; the user themselves only once per year (anti-spam against date-hopping).

Idempotency & resilience

The fire worker sets lastCelebratedAt atomically via race-claim. Bot restart within the notify minute → no double-congratulation. Channel deleted or bot missing ManageRoles → congratulation still posts, role failure logged but not crashing. Suspended guilds are explicitly skipped.

Frequently asked questions about {title}

Do I have to provide my birth year?

marketing.features.birthday.faq_1_a

What happens when multiple users have the same birthday?

Each gets their own congratulation message with their own card and ping. Everyone gets their moment.

How long does the birthday role last?

Exactly 24 hours from the congratulation timestamp. Removal runs as a delayed BullMQ job — it survives bot restarts and is idempotent (does nothing if the role is already gone).

Can I freely design the congratulation card?

marketing.features.birthday.faq_4_a

Who can change a user's entry?

The user themselves at most once per year (anti-date-hopping). Server admins anytime via the dashboard — recorded in the addedByUserId field.

What happens to birthday data when an account is deleted?

Birthday entries are automatically deleted via foreign-key cascade with the user account. On a user tombstone (GDPR Art. 17) the bot stops congratulating that account immediately.

More modules

Ready for TeraOne?

Two clicks to set up. No onboarding, no credit card.

Discord Birthday Bot — Automatic Congratulations & Role | TeraOne · TeraOne