Profile
Birthday
The `birthday` command allows users to set, view, or reset their birthday and automatically calculates their zodiac sign. It can be triggered using the prefixes `P`, `p`, or the slash command `/`.
Command Details
- Name: birthday
- Aliases: bd
- Category: Profile
- Description: Set your profile birthday and zodiac sign
- Usage:
P birthday <date || reset || help>,p birthday <date || reset || help>, or/birthday <subcommand> - Examples:
P birthday 20-01p bd reset/birthday helpP birthday 03/15
- Cooldown: 5 seconds
- Arguments: date/subcommand (optional for viewing)
- Slash Command: Enabled
- Permissions:
- Bot: SendMessages, ViewChannel, EmbedLinks
- User: None
- Player Requirements: None (no voice, DJ, or active player required)
Functionality
- Comprehensive birthday and zodiac sign management system.
- Set Birthday: Accepts multiple date formats (DD-MM, MM-DD, MM/DD, DD/MM).
- Automatic Zodiac Calculation: Determines zodiac sign based on birth date.
- Visual Zodiac Display: Shows zodiac emoji as embed thumbnail.
- Reset Function: Clears both birthday and zodiac sign data.
- Help Command: Displays usage examples and supported date formats.
- View Current: Shows current birthday and zodiac sign when no arguments provided.
- Multiple Date Format Support: Flexible date parsing using Moment.js.
- Database Integration: Persistent storage of birthday and zodiac information.
- Error Validation: Validates date formats and provides helpful error messages.
- Formatted Display: Shows dates in DD-MMM format (e.g., "20-Jan").
- Supports both prefix-based (
Porp) and slash command (/) inputs.
Code Overview
The command is built using a Command class structure and handles both message-based and interaction-based (slash command) inputs. It uses:
moment()library for flexible date parsing and validation across multiple formats.client.utils.getZodiacSign()to calculate zodiac signs based on day and month.client.utils.emojiToImage()to convert zodiac emojis into embed thumbnails.client.utils.formatCapitalize()for proper name formatting of zodiac signs.Users.updateOne()with$setoperator for updating birthday and zodiac data.- Array of supported date formats for comprehensive date parsing.
- Switch statement for handling subcommands (help, reset, set, view).
- Conditional zodiac emoji display based on user's current zodiac sign.
- Language localization for all messages, errors, and success responses.
- Error handling for invalid date formats with helpful format suggestions.
- Database integration for persistent profile data storage and retrieval.
Bio
The `bio` command allows users to set, view, or reset their profile biography in a Discord server. It can be triggered using the prefixes `P`, `p`, or the slash command `/`.
Gender
The `gender` command allows users to set, view, or reset their gender preference in their profile. It can be triggered using the prefixes `P`, `p`, or the slash command `/`.