Passa al contenuto principale

Birthday-Calendar

Let users set their birthday and congratulate them when they have a birthday.

Calendario compleanni
Fai in modo che gli utenti possano impostare il loro compleanno e congratulati con loro quando è il loro compleanno
This module is open-source.
This module is storing data in your bot's database.
This module creates 2 top-level Slash-Commands on your server.
This module has one configuration file.
This module is being actively used on over 9100 other servers on SCNX.
This module is included for free in every plan. Learn more about prices.

Features

  • Users can register their birthday (day, month, and optionally year) using a slash command.
  • An auto-updating birthday embed displays all registered birthdays organized by month, with a "Set Birthday" button for easy registration.
  • The bot automatically sends birthday congratulation messages every day at midnight.
  • Optionally assign a birthday role to users on their birthday (removed automatically the next day).
  • If a user provides their birth year, the congratulation message can include their age.
  • Optional pre-birthday notifications posted in the birthday channel a configurable number of days before a user's birthday. Multiple lead times can be configured (e.g. both 7 days and 1 day before).
  • /birthday upcoming lets any member preview the next N days of upcoming birthdays without browsing the embed.
  • Birthday data is automatically removed when a member leaves the server.
  • Optional admin birthday management: admins can set, remove, lock, and unlock user birthdays.

Setup

  1. Create a channel where the birthday embed and congratulation messages will be sent, and configure it in the module configuration.
  2. Make sure the bot has View Channel, Send Messages, Embed Links, and Manage Messages permissions in the birthday channel.
  3. If you want to use the birthday role feature, create a role and configure it in the module configuration. Ensure the bot's role is positioned above the birthday role in the role hierarchy.

Usage

Users can interact with the birthday module using the following commands:

  • Use /birthday set to register their birthday, or click the "Set Birthday" button on the birthday embed. The year is optional -- if provided, the bot will display their age on their birthday.
  • Use /birthday status to view their currently registered birthday.
  • Use /birthday delete to remove their birthday from the calendar.
  • Use /birthday upcoming to view birthdays coming up in the next N days. The default look-ahead range is configured in the configuration; members can override it with the optional days argument.

Admin birthday management

If enabled in the configuration, admins can use the /manage-birthday command to manage user birthdays:

  • Set a user's birthday.
  • Remove a user's birthday.
  • Lock a birthday - prevents the user from editing or deleting it themselves.
  • Unlock a previously locked birthday.

Locked birthdays show a lock indicator when users view their own birthday status.

Automatic birthday checks

Every day at midnight, the bot checks for birthdays and:

  1. Sends a congratulation message for each user whose birthday is today.
  2. Assigns the configured birthday role (if set) and removes it from users whose birthday has passed.
  3. Updates the birthday embed with the latest data.

Commands

Understand the documentation
In these docs, name:<Type> is an option of a slash-command with name name and the type Type. Options that not required, are described as [name:<Type>]. If the action of a command is vastly different between required and not-required options, we might list them separately.
Examples
  • /moderate ban user:<Member>: This command (/moderate ban) has an required option with the name "user" that only accepts one member as a value.
  • /moderate ban victim:<Member> reason:<Text>: This command (/moderate ban) has an required option with the name "victim" that only accepts one member as a value and another required option with the name "reason" that accepts any text as an value.
  • /moderate ban victim:<Member> reason:<Text> [proof:<Attachment>]: This command (/moderate ban) has an required option with the name "victim" that only accepts one member as a value, another required option with the name "reason" that accepts any text as an value and a not-required option with the name "proof" which allows one attachment as its value.
CommandDescription
/birthday set day:<Integer> month:<Integer> [year:<Integer>]Register your birthday. Day and month are required. The year is optional but allows the bot to display your age. Users under 13 cannot register a birth year (Discord ToS compliance).
/birthday statusView your currently registered birthday and age (if birth year was provided).
/birthday deleteRemove your birthday from the calendar.
/birthday upcoming [days:<Integer>]List upcoming birthdays in the next days days (defaults to the value configured in the Commands tab).
/manage-birthday set user:<User> day:<Integer> month:<Integer> [year:<Integer>]Set a user's birthday. Requires admin birthday management to be enabled.
/manage-birthday remove user:<User>Remove a user's birthday. Requires admin birthday management to be enabled.
/manage-birthday lock user:<User>Lock a user's birthday, preventing them from editing or deleting it. Requires admin birthday management to be enabled.
/manage-birthday unlock user:<User>Unlock a previously locked birthday. Requires admin birthday management to be enabled.

Configuration

In this configuration file, you can configure the module. Open it in your dashboard.

The configuration is organized into tabs in the dashboard - the rows below are grouped by tab.

General

FieldDescription
Birthday-ChannelChannel where the birthday embed and congratulation messages (if not overwritten) will be sent.
(optional) Notification-ChannelOptional separate channel for birthday congratulation messages. If empty, the birthday channel is used. Unlike the birthday channel, old messages are not automatically removed from this channel.
Birthday-Embed enabledIf enabled, an auto-updating embed listing all birthdays by month will be sent in the birthday channel.
Birthday-RoleA role that is assigned to users on their birthday and removed the next day. Leave empty to disable.
Disable year inputIf enabled, users cannot enter a birth year. Existing years will not be displayed and age will not be shown in birthday messages or the embed.

Birthday Embed

FieldDescription
Birthday-EmbedCustomize the appearance (title, description, color, thumbnail, image) of the birthday embed.
Set Birthday Button LabelThe label for the "Set Birthday" button on the birthday embed. Clear this field to hide the button entirely.
User Display ModeHow users are displayed in the birthday embed. Options: Mention (clickable @mention), Tag (username), or Nickname (server nickname).
Use Components V2 LayoutIf enabled, the birthday embed is rendered using Discord's Components V2 system instead of a classic embed.
Clear User Messages DailyIf enabled, the bot deletes messages from other users in the birthday channel every day to keep it clean.

Messages

FieldDescription
Birthday MessageThe congratulation message sent when a user has a birthday but did not provide their birth year.
Birthday message with ageThe congratulation message sent when a user has a birthday and provided their birth year, including their age.
"Successfully changed"-MessageThe message shown when a user successfully registers or updates their birthday.

Pre-Birthday Notifications

FieldDescription
Enable pre-birthday notifications?If enabled, the bot posts a notification in the birthday channel a configurable number of days before each user's birthday.
Pre-birthday lead times (days)Only visible if pre-birthday notifications are enabled. List of lead times (in days) before a birthday at which to post a notification. For example, [1, 7] sends a notification both 7 days and 1 day before the birthday.
Pre-birthday messageOnly visible if pre-birthday notifications are enabled. The pre-birthday message sent for users who did not provide a birth year. The %days% placeholder gives the number of days remaining.
Pre-birthday message with ageOnly visible if pre-birthday notifications are enabled. The pre-birthday message sent for users who did provide a birth year. Supports the %age% placeholder for the age the user will turn.

Commands

FieldDescription
Enable admin birthday management?If enabled, the /manage-birthday command becomes available for server admins to set, remove, lock, and unlock user birthdays.
/birthday upcoming default range (days)Default number of days the /birthday upcoming subcommand will look ahead if the user does not specify a range. Defaults to 30.

Troubleshooting

The birthday embed is not showing up
  • Make sure the configured birthday channel exists and the bot has View Channel, Send Messages, and Embed Links permissions.
  • Ensure that "Birthday-Embed enabled" is turned on in the configuration.
Birthday roles are not being assigned or removed
  • Make sure a birthday role is configured in the module configuration.
  • Ensure the bot's role is positioned above the birthday role in the server's role hierarchy.
  • Verify the bot has the Manage Roles permission.

Stored data

The following data is being stored about every registered birthday:

  • The Discord User ID of the member
  • The birthday day and month
  • The birth year (if provided by the user)
  • Whether the birthday is locked (if admin management is enabled)
  • Metadata about the entry (date when created and last updated)

To remove all data stored by this module, purge the module database.

Need more help?
Can't find what you're looking for? Our team is happy to help.