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
/geburtstag set opens a modal — DD.MM is required, year is optional. /geburtstag remove and /geburtstag info @user round out the user-facing commands.
/geburtstag panel posts a persistent embed with a 🎂 button. Click opens the same modal — perfect for a 'birthdays' channel.
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.
marketing.features.birthday.cap_4_desc
Optional: when the bot congratulates, a configurable role is granted and removed exactly 24h later. Idempotent against bot restarts and permission flaps.
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.