Information
Stats
The `stats` command displays comprehensive statistics about the bot in a Discord server. It can be triggered using the prefixes `P`, `p`, or the slash command `/`.
Command Details
- Name: stats
- Aliases: botstats, statistics
- Category: Information
- Description: Displays statistics about the bot
- Usage:
P stats
,p stats
, or/stats
- Examples:
P stats
p stats
/stats
- Cooldown: 5 seconds
- Arguments: None
- Slash Command: Enabled
- Permissions:
- Bot: SendMessages, ViewChannel, EmbedLinks
- User: None
- Player Requirements: None (no voice, DJ, or active player required)
Functionality
- Displays comprehensive bot statistics in an organized embed format.
- Shows a loading message while gathering statistical data.
- Fetches data from the database to provide accurate user counts.
- Displays an embed with:
- A title with customizable emojis showing "STATS".
- Total number of servers the bot is in.
- Total number of registered users (from database) or cached users.
- Bot uptime formatted in days, hours, and minutes.
- Arrow emojis for visual formatting throughout the fields.
- A footer with additional information.
- Includes interactive buttons:
- Support button linking to the support server.
- Invite button for adding the bot to other servers.
- Supports both prefix-based (
P
orp
) and slash command (/
) inputs. - Handles errors with appropriate error messages.
Code Overview
The command is built using a Command
class structure and handles both message-based and interaction-based (slash command) inputs. It uses:
Users.find()
to query the database for accurate user statistics.client.guilds.cache.size
to get the total number of servers.client.users.cache.size
as a fallback for user count if database query fails.client.channels.cache.size
to count accessible channels.client.uptime
with mathematical calculations to format uptime into readable format.Math.floor()
operations to convert milliseconds into days, hours, and minutes.client.embed()
to create a formatted embed with statistical information.client.utils.linkButton
to create interactive buttons for support and invite links.client.utils.createButtonRow
to organize buttons in a row layout.- Language localization for messages and statistical field formatting.
- Global emoji integration for visual enhancement and formatting.
- Loading states for better user experience during data gathering.
- Error handling for database queries and unexpected issues during execution.