> ## Documentation Index
> Fetch the complete documentation index at: https://wiki.petto.sbs/llms.txt
> Use this file to discover all available pages before exploring further.

# Birthdays

> Members save their birthday, and on the day Petto posts a message at the hour you choose and can give them a role for the day.

## Overview

Each member saves their own birthday in a server with `!birthday set`. On that day Petto sends a message in the channel you choose, at the hour you choose, and can give the member a **role for the day** (taken back a day later).

Saving a birthday is optional for everyone, and each server keeps its own list: a birthday saved in one server is not shown in another.

![Petto wishes the member for a happy birthday in #birthdays, kira congratulates them and the message gets six cake reactions](https://mintcdn.com/wikipetto/LoL7QuPJ71yd9F_N/images/discord/community/birthdays.webp?fit=max\&auto=format\&n=LoL7QuPJ71yd9F_N\&q=85\&s=7b4ec8e30b5b303169cb556c319bab2a)

In Discord: Petto celebrates a birthday in the birthdays channel with the usual message.

![Member Roles Updated: for got the Birthday role, given by Petto](https://mintcdn.com/wikipetto/rok-7yv8v3ZrWquM/images/discord/community/birthdays-role-log.webp?fit=max\&auto=format\&n=rok-7yv8v3ZrWquM\&q=85\&s=1e6556c653ab85dbefb2f89f5723ecdc)

In Discord: the member log when Petto gives the role for the day.

## For members

```javascript Syntax theme={null}
!birthday set <day> <month> [year]
!birthday view [user]
!birthday upcoming
!birthday remove
```

```javascript Example theme={null}
!birthday set 25 12
!birthday set 1 2 2007
!birthday view @Someone
!birthday upcoming
```

* The **day** comes first, then the month. The year is optional: with it, the message can say the age they turn (`{age}`).
* Real dates only: there is no 30 February. A **29 February** birthday is celebrated on 28 February in years that have no 29th.
* `!birthday view` says how many days are left. `!birthday upcoming` lists the next ones of the server (up to 25). `!birthday remove` forgets yours.
* Short names: `!bday` and `!bd`.

> [accordion] !birthday set
>
> ![mia.draws runs !birthday set 25 12 2006 and Petto says the birthday is saved: 25 December 2006](https://mintcdn.com/wikipetto/rok-7yv8v3ZrWquM/images/discord/community/birthdays-set.webp?fit=max\&auto=format\&n=rok-7yv8v3ZrWquM\&q=85\&s=feebb3efbcd3e82cb62349a1c808e599)
>
> In Discord: a birthday saved with the year.

> [accordion] !birthday set (a date that does not exist)
>
> ![nico runs !birthday set 30 2 and Petto answers that February has no day 30](https://mintcdn.com/wikipetto/rok-7yv8v3ZrWquM/images/discord/community/birthdays-set-invalid.webp?fit=max\&auto=format\&n=rok-7yv8v3ZrWquM\&q=85\&s=1f20fa8aefe79404400727e94ef87dc4)
>
> In Discord: there is no 30 February, so nothing is saved.

> [accordion] !birthday view
>
> ![kira runs !birthday view on mia.draws: 25 December 2006, next birthday in 57 days, turns 20](https://mintcdn.com/wikipetto/rok-7yv8v3ZrWquM/images/discord/community/birthdays-view.webp?fit=max\&auto=format\&n=rok-7yv8v3ZrWquM\&q=85\&s=b3aaed6219f04b416932005ee3e037dc)
>
> In Discord: the birthday of a member, the days left and the age they turn.

> [accordion] !birthday upcoming
>
> ![zoe\_plays runs !birthday upcoming and Petto lists seven members, for today with a cake, nico tomorrow and the rest in days](https://mintcdn.com/wikipetto/rok-7yv8v3ZrWquM/images/discord/community/birthdays-upcoming.webp?fit=max\&auto=format\&n=rok-7yv8v3ZrWquM\&q=85\&s=9390258da0a397626a963fa9d07edfb7)
>
> In Discord: the next birthdays of the server, today first.

> [accordion] !birthday remove
>
> ![maxwell runs !birthday remove and Petto answers that the birthday was forgotten](https://mintcdn.com/wikipetto/rok-7yv8v3ZrWquM/images/discord/community/birthdays-remove.webp?fit=max\&auto=format\&n=rok-7yv8v3ZrWquM\&q=85\&s=6cb6da045cec40365e81860d3e3e82fe)
>
> In Discord: Petto forgets your birthday in this server.

## For administrators

Everything below needs **Manage Server**. The same settings are on the **Birthdays** page of the dashboard.

![The Birthdays page of Petto Land, on, with the birthdays channel, the Birthday role, 9 o'clock in UTC-5 and the message](https://mintcdn.com/wikipetto/PiFwt6dDUZHBNDT7/images/dashboard/community/birthdays.webp?fit=max\&auto=format\&n=PiFwt6dDUZHBNDT7\&q=85\&s=c2b675031070a0ac615333559b3d1a4b)

Dashboard → Community → Birthdays: the counts, the channel, the role for the day, the hour, the time zone and the message with its preview.

```javascript Syntax theme={null}
!birthday config [enabled]
!birthday config --channel <channel> --role <role> --hour <0-23> --timezone <offset>
!birthday config --message <text> --embed <name>
!birthday config --clear_role true
```

```javascript Example theme={null}
!birthday config true
!birthday config --channel #birthdays --hour 9 --timezone UTC-5
!birthday config --role @Birthday
!birthday config --message "Happy birthday {user}! You turn {age}."
```

| Setting | What it does |
| - | - |
| `enabled` | Turns the birthday messages on or off |
| `channel` | Where the message is sent |
| `role` | A role given for the day. Petto has to be above it |
| `hour` | The hour of the day to send it (0 to 23), in the time zone of the server |
| `timezone` | The time zone of the server as an offset: `UTC-5`, `-5`, `+5:30`. The default is UTC-5 |
| `message` | The text. Use `none` to go back to the default one |
| `embed` | A [saved embed](https://wiki.petto.sbs/resources/scripting/embeds.md) sent instead of the text. Use `none` to stop using it |

Without any option, `!birthday config` shows the current settings.

> [accordion] !birthday config
>
> ![liam runs !birthday config: messages on, channel #birthdays, role Birthday, sent at 09:00 UTC-5 and the usual message](https://mintcdn.com/wikipetto/rok-7yv8v3ZrWquM/images/discord/community/birthdays-config-view.webp?fit=max\&auto=format\&n=rok-7yv8v3ZrWquM\&q=85\&s=37b5e98b372eb3fe63302dfc7a8c4bc6)
>
> In Discord: the current settings.

> [accordion] !birthday config --channel --hour --timezone
>
> ![liam sets the channel #birthdays, hour 9 and time zone UTC-5, and Petto shows the settings with no role yet](https://mintcdn.com/wikipetto/rok-7yv8v3ZrWquM/images/discord/community/birthdays-config-channel.webp?fit=max\&auto=format\&n=rok-7yv8v3ZrWquM\&q=85\&s=5195110740e4d9328c2f5668d2e9261d)
>
> In Discord: the channel, the hour and the time zone in one command; the answer shows every setting.

> [accordion] !birthday config --role
>
> ![liam sets the role Birthday and the settings now show it as the role for the day](https://mintcdn.com/wikipetto/rok-7yv8v3ZrWquM/images/discord/community/birthdays-config-role.webp?fit=max\&auto=format\&n=rok-7yv8v3ZrWquM\&q=85\&s=5072abf7f0ec1c9bab70a710000658df)
>
> In Discord: the role for the day.

> [accordion] !birthday config --message
>
> ![liam sets the message Happy birthday \{user}! You turn \{age}. and the settings show it](https://mintcdn.com/wikipetto/rok-7yv8v3ZrWquM/images/discord/community/birthdays-config-message.webp?fit=max\&auto=format\&n=rok-7yv8v3ZrWquM\&q=85\&s=3faebad02b9600b9901a81b7f89fad6a)
>
> In Discord: a message of the server with \{age}.

> [accordion] A time zone Petto cannot read
>
> ![liam writes --timezone Bogota and Petto asks for an offset like UTC-5, -5 or +5:30](https://mintcdn.com/wikipetto/rok-7yv8v3ZrWquM/images/discord/community/birthdays-config-bad-timezone.webp?fit=max\&auto=format\&n=rok-7yv8v3ZrWquM\&q=85\&s=839d1d5b5c6f9bb3ee8bc114d3563615)
>
> In Discord: the time zone is an offset, not a city.

> [accordion] Without Manage Server
>
> ![nico runs !birthday config true and Petto answers that the Manage Server permission is needed](https://mintcdn.com/wikipetto/rok-7yv8v3ZrWquM/images/discord/community/birthdays-config-no-permission.webp?fit=max\&auto=format\&n=rok-7yv8v3ZrWquM\&q=85\&s=b72d4436d951b8d769dc03fdb58cdc28)
>
> In Discord: a member without Manage Server cannot change the settings.

### Variables

The text accepts `{user}`, `{user.mention}`, `{server}` and the other [variables](https://wiki.petto.sbs/resources/scripting/variables.md), filled for the member who has the birthday. `{age}` is the age the member turns (empty when they did not say the year) and works in the text, not in a saved embed.

| Text | What the channel reads |
| - | - |
| `🎂 Happy birthday {user}! You turn {age} today!` | 🎂 Happy birthday @Liam! You turn 21 today! |
| `🎉 Everyone wish {user.display_name} a happy birthday! {reactreply:🎂}` | 🎉 Everyone wish Liam a happy birthday! (with a 🎂 reaction) |
| `{choose:🎈\|🎁\|🥳} It's {user}'s day in {server_name}!` | 🥳 It's @Liam's day in Cozy Corner! |

![Petto posts in #birthdays: Happy birthday @ivy! You turn 18 today!, and chu congratulates ivy](https://mintcdn.com/wikipetto/rok-7yv8v3ZrWquM/images/discord/community/birthdays-custom-message.webp?fit=max\&auto=format\&n=rok-7yv8v3ZrWquM\&q=85\&s=ffe22b65564b26be8aba5ff773ff24d9)

In Discord: a message the server wrote, with \{age}, is sent as it is on the day.

If you use `{age}`, write the sentence so it still reads well without it, since members who didn't give a year have no age.

> [!TIP]
>
> The messages can come from their own name and picture: see [Message look](https://wiki.petto.sbs/setup/message-look.md), kind `birthdays`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.