Timezones and Timing
The bot checks birthdays once a minute. Two clocks are involved:
- The member's timezone decides when their birthday starts and ends. It is the timezone on their dashboard account Settings page; members who have none use the server's timezone.
- The server's timezone (Settings > Locale & Timezone, UTC when unset) decides when the Announcement Hour is reached.
The birthday role
The Birthday Role follows the member's own day:
- it is given within a minute of their birthday starting in their timezone,
- it is removed within a minute of their birthday ending,
- it does not wait for the Announcement Hour.
The bot also takes the role back from anyone who should not have it: members whose birthday is over, members who ran /birthday forget, and everyone once the module is turned off. When you pick a different Birthday Role, the old role is removed from its holders.
Announcements
A member is announced at the first check when both of these are true:
- it is their birthday in their own timezone, and
- the server's clock is at or past the Announcement Hour.
Usually that is the Announcement Hour itself. A member whose birthday starts after that hour on the server's clock (for example a member well behind the server's timezone) is announced when their birthday starts instead.
Each member is announced once per birthday. In Bulk mode the server gets one digest per server day, listing the members who are celebrating when it is sent.
After downtime
Announcements catch up. If the bot was offline or restarting at the Announcement Hour, it announces as soon as it is back, as long as the member's birthday has not ended. A birthday that ended while the bot was offline is not announced late. The same goes for a member who saves their birthday on the day itself: they are announced on that check if it is still their birthday and the hour has passed.
Leap day birthdays
Members born on February 29 celebrate on February 29 in leap years. In other years they celebrate on February 28 by default. They can switch to March 1 in the Birthday section of the dashboard's account Settings page. /birthday view and /birthday next show which day is used.
Age
A member's age for {birthday.age} and age roles is worked out on their own birthday date in their timezone, so it goes up at the start of their birthday.