/monitor
Adds a user to the monitoring list to track their profile picture and username changes.The Discord user to add to the monitor list
Behavior
- Checks if the user is already being tracked
- If already tracked, displays when tracking started
- If not tracked, adds the user to the database with the current timestamp
- Data collection begins within 30 minutes of adding
Example Usage
/monitor memberid:@JohnDoe
```text
### Expected Response
**Success (new user):**
```text
Successfully added JohnDoe to the monitoring list.
```text
**Already tracked:**
```text
JohnDoe is already being tracked since Friday, March 1, 2026 at 10:30 AM
```text
**Error:**
```text
Invalid User ID.
```text
<Note>
The bot stores the tracking start date. Historical data from before this date is not available.
</Note>
---
## /removemonitor
Removes a user from the monitoring list and deletes all associated tracking data.
<ParamField path="memberid" type="User" required>
The Discord user to remove from the monitor list
</ParamField>
### Behavior
- Deletes the user from the database
- Removes all associated profile picture and username history
- Cannot be undone
### Example Usage
```text
/removemonitor memberid:@JohnDoe
```text
### Expected Response
**Success:**
```text
Successfully deleted user.
```text
**User not found:**
```text
Unable to find user. User may not be tracked.
```text
**Error:**
```text
Invalid User ID.
```text
<Warning>
Removing a user deletes all historical data permanently. This action cannot be undone.
</Warning>
---
## /pfphistory
Displays the profile picture history for a specified user in a paginated format.
<ParamField path="memberid" type="User" required>
The Discord user whose profile picture history to display
</ParamField>
### Behavior
- Fetches all recorded profile pictures from the database
- Displays 10 entries per page
- Each entry shows:
- When the profile picture was first recorded (relative timestamp)
- Link to the profile picture image
- SHA-256 checksum of the image
- Provides Back/Next navigation buttons
### Example Usage
```text
/pfphistory memberid:@JohnDoe
```text
### Expected Response
**Success:**
An embed titled "Profile Picture History of JohnDoe#1234" with fields:
```text
Profile Picture first recorded 2 months ago
Link: Look at the previous picture
Checksum: a3f8b9c2d1e4f5a6b7c8d9e0f1a2b3c4
Profile Picture first recorded 3 months ago
Link: Look at the previous picture
Checksum: b4e9c3d2e5f6a7b8c9d0e1f2a3b4c5d6
Page 1 of 3
[Back] [Next]
```text
**User not tracked:**
```text
User not found
The User you requested the history of could not be found in our Database.
To add the user to tracking use /monitor @User
```text
**No data yet:**
```text
No Profile picture entries found. Please check back in about 30 minutes.
```text
### Pagination
- 10 entries per page
- Back button disabled on first page
- Next button disabled on last page
- Footer shows current page number
<Tip>
Click the image link to view the full-size profile picture. The checksum can be used to verify image integrity.
</Tip>
---
## /usernamehistory
Displays the username history for a specified user in a paginated format.
<ParamField path="memberid" type="User" required>
The Discord user whose username history to display
</ParamField>
### Behavior
- Fetches all recorded usernames from the database
- Displays 10 entries per page
- Each entry shows:
- When the username was first recorded (relative timestamp)
- The username value
- Provides Back/Next navigation buttons
### Example Usage
```text
/usernamehistory memberid:@JohnDoe
```text
### Expected Response
**Success:**
An embed titled "Username History of JohnDoe#1234" with fields:
```text
Username first recorded 1 month ago
JohnDoe
Username first recorded 3 months ago
JohnD
Username first recorded 6 months ago
jdoe123
Page 1 of 1
[Back] [Next]
```text
**User not tracked:**
```text
User not found
The User you requested the history of could not be found in our Database.
To add the user to tracking use /monitor @User
```text
**No data yet:**
```text
No Username entries found. Please check back in about 30 minutes.
```text
### Pagination
Identical behavior to `/pfphistory` - 10 entries per page with navigation controls.
<Note>
Username changes are tracked automatically. The bot records the username at the time of each check.
</Note>
---
## /stats
Shows statistics about a user's profile picture change behavior.
<ParamField path="member" type="User" required>
The Discord user whose statistics to display
</ParamField>
### Statistics Displayed
1. **Average time between profile picture changes (Hours)** - Average duration in hours
2. **Average time between profile picture changes (Days)** - Average duration in days
3. **Changes since beginning of Monitoring** - Total number of profile picture changes
4. **Monitored since** - Date when tracking started (in footer)
### Behavior
- Calculates average duration between consecutive profile picture changes
- Requires at least 2 profile pictures to calculate statistics
- Uses actual timestamps to compute precise averages
### Example Usage
```text
/stats member:@JohnDoe
```text
### Expected Response
**Success:**
An embed with the user's tag showing:
```text
Average times between profile picture changes:
Hours: 720
Days: 30
Changes since beginning of Monitoring: 5
Monitored since: Fri, 01 Dec 2025 14:30:00 +0000
```text
**Not enough data:**
```text
Not enough data to calculate an average time between profile picture changes.
```text
**User not tracked:**
```text
User is not currently being tracked. You can add the user to the monitor list by using /monitor @user
```text
**No profile pictures recorded:**
```text
No Profile Pictures have been recorded for this User. Please wait at least 30 minutes and check again.
```text
### Calculation Method
The bot calculates the time difference between each consecutive profile picture change, then averages all intervals:
```text
Average = Total Duration / Number of Changes
```text
<Info>
Statistics become more accurate over time as more data points are collected. At least 2 profile picture changes are required.
</Info>