diff --git a/docs/custom-bot/modules/moderation/staff-management.md b/docs/custom-bot/modules/moderation/staff-management.md
index b913a68b..1f052d11 100644
--- a/docs/custom-bot/modules/moderation/staff-management.md
+++ b/docs/custom-bot/modules/moderation/staff-management.md
@@ -1,71 +1,121 @@
# Staff Management System
-A powerful, highly customizable staff management system to track activity, moderate personnel, and maintain detailed staff records.
+A powerful, highly customizable staff management system designed to track activity, moderate personell, and maintain detailed staff records seamlessly.
## Features {#features}
-- **Shift management** - On-duty/off-duty tracking with clock-in/clock-out, multi-break support (with per-shift break count), configurable duty types, duty time leaderboard, and shift quotas.
-- **Shift change log** - Optional audit log channel that records every shift event (start, break, resume, end, void) with elapsed time, break count, and the staff member involved.
-- **Leave of Absence & Reduced Activity** - Staff can request LoA or reduced activity status with an approval workflow, optional role assignment, and configurable maximum durations.
-- **Infractions & Suspensions** - Issue warnings, strikes, demotions, terminations, or mark staff as under investigation. Temporary suspensions automatically remove staff roles and assign a suspension role.
-- **Promotions** - Promote staff members with optional automatic role assignment and customizable announcements.
-- **Staff Profiles & Reviews** - Individual staff profiles with a 1-5 star rating system, review history, and reputation tracking.
-- **Activity Checks** - Periodic staff activity verification with response tracking, configurable check windows, a fully customizable end-of-check embed, and tracking of who started each check (or "system" for automated checks).
+- **Infractions & Suspensions**: Issue warnings, strikes, demotions, terminations, mark staff as under investigation or issue custom infraction types. Suspensions temporarily remove the staff roles of a staff member for the specified duration in the command.
+- **Promotions**: Promote staff members with optional automatic role assignment and customizable announcements for both in the channel and DM's (if enabled).
+- **Staff Reviews**: Let users review staff members with a rating from 1 - 5 stars and their feedback with a customizable review message. You can also let members review other (normal) members and let staff review themselves.
+- **Shift management**: Let staff members go on/off-duty and take breaks while tracking their shift time, which contributes to a customizable leaderboard (weekly/monthly). Admins can manage staff shifts by manually adding time, forcing members off duty, or voiding shifts entirely. Set custom shift types, establish quotas for specific roles, configure minimum shift durations, and log all shift changes.
+- **Leave of Absence & Reduced Activity**: Staff can request a Leave of Absence (LOA) or Reduced Activity (RA) status with an approval workflow, optional role assignment, and configurable maximum durations. You can also optionally enable status logging which logs every status update for each staff member.
+- **Staff Profiles**: Let staff members (or also normal members) have their own nickname and introduction in a customizable embed, which users can see via a command. Supervisors/Management can also reset a staff member's profile if needed.
+- **Activity Checks**: Allow admins to host activity checks which staff members have to reach to with a custom duration. Exemptions can also be set together with automation settings to automatically host activity checks. Results for activity checks are logged with an optional role ping to choice which shows an overview of who reacted, who didn't react and who were exempt.
- **Role-based access control** - Three access tiers: Staff Roles (basic commands), Supervisor Roles (management capabilities), and Management Roles (full access including data deletion).
## Setup {#setup}
1. [Enable the module](https://scnx.app/glink?page=bot/modules?query=staff-management-system) on your server.
2. Open the [General Configuration](https://scnx.app/glink?page=bot/configuration?file=staff-management-system%7Cconfiguration) and set the **Staff Roles**, **Supervisor Roles**, and **Management Roles** to control who can access which features.
-3. Set up a **Log Channel** where staff management events will be logged.
+3. Select a channel for the **General Log Channel**, which is the default channel for logging events in this module.
4. Configure the individual feature settings as needed:
- - [Shifts](https://scnx.app/glink?page=bot/configuration?file=staff-management-system%7Cshifts) - Duty types, quotas, and leaderboard settings.
- - [Status](https://scnx.app/glink?page=bot/configuration?file=staff-management-system%7Cstatus) - LoA and reduced activity settings.
- - [Infractions](https://scnx.app/glink?page=bot/configuration?file=staff-management-system%7Cinfractions) - Infraction types, suspension settings, and DM notifications.
- - [Promotions](https://scnx.app/glink?page=bot/configuration?file=staff-management-system%7Cpromotions) - Promotion announcements and role assignment.
- - [Reviews](https://scnx.app/glink?page=bot/configuration?file=staff-management-system%7Creviews) - Rating system settings.
- - [Profiles](https://scnx.app/glink?page=bot/configuration?file=staff-management-system%7Cprofiles) - Staff profile customization.
- - [Activity Checks](https://scnx.app/glink?page=bot/configuration?file=staff-management-system%7Cactivity-checks) - Activity verification settings.
+ - [Infractions](https://scnx.app/glink?page=bot/configuration?file=staff-management-system%7Cinfractions) - Infraction types, suspension settings, and DM notifications.
+ - [Promotions](https://scnx.app/glink?page=bot/configuration?file=staff-management-system%7Cpromotions) - Promotion announcements and role assignment.
+ - [Reviews](https://scnx.app/glink?page=bot/configuration?file=staff-management-system%7Creviews) - Reviews system settings and message customization.
+ - [Shifts](https://scnx.app/glink?page=bot/configuration?file=staff-management-system%7Cshifts) - Duty types, quotas, and leaderboard settings.
+ - [Status](https://scnx.app/glink?page=bot/configuration?file=staff-management-system%7Cstatus) - LoA and reduced activity settings.
+ - [Profiles](https://scnx.app/glink?page=bot/configuration?file=staff-management-system%7Cprofiles) - Staff profile customization and settings.
+ - [Activity Checks](https://scnx.app/glink?page=bot/configuration?file=staff-management-system%7Cactivity-checks) - Activity checks settings.
## Usage {#usage}
+### Infractions {#infractions}
+
+[Supervisors](https://scnx.app/glink?page=bot/configuration?file=staff-management-system%7Cconfiguration) can issue infractions to staff members with the `\staff-management infraction issue` command. Infraction types can be configured in the [configuration](https://scnx.app/glink?page=bot/configuration?file=staff-management-system%7Cinfractions), with the default infraction types being: 'Warning, Strike, Demotion, Termination and Under Investigation'.
+Staff **cannot infract themselves**.
+You can also:
+- Void infractions for an user with the `/staff-management infraction void` command - this keeps the infraction in history, but the punishment is no longer "active". This can be done by either using the message link of the infraction, or the case ID. (Only supervisors+ can void infractions)
+- View the infractions history of an user with the `/staff-management infraction history` command - this shows all previous infractions of an user.
+
+Infractions (including suspensions) can optionally also be sent to the infracted staff member's DM's by enabling the 'DM User on infraction' option - these messages are also configurable.
+
+### Promotions {#promotions}
+
+[Supervisors](https://scnx.app/glink?page=bot/configuration?file=staff-management-system%7Cconfiguration) can promote staff members to a higher rank by using the `/staff-management promotion promote` command. Users can also view an user's promotion history with the `/staff-management promotion history` command - this shows the full history of promotions for that user.
+
+The promotion message is customizable, and a message could be sent to the promotes user's DM's by enabling the 'DM Promoted User' option - that message is also customizable.
+
+Optionally, the bot can also automatically add the new role upon promotion.
+**⚠️ WARNING: This option is dangerous and could start server raids or make it worse during server raids to grant unauthorized users higher permission roles which grants dangerous permissions. The addition of roles cannot be reverted automatically - it is recommended to keep this setting disabled!**
+
+### Staff Reviews {#reviews}
+
+Enabling the [reviews system ](https://scnx.app/glink?page=bot/configuration?file=staff-management-system%7Creviews) allows users to review (staff) members with a stars ⭐ rating system and feedback - all in a configurable message and channel.
+
+Additionally there are 2 options to refine the reviews experience to your needs:
+- Allow Self-Rating: This option allows staff to review themselves. (This is not recommended for a fair and honest reviews system - it's useful to test reviews on yourself though)
+- Only let users review staff: This option only allows members to review [staff members](https://scnx.app/glink?page=bot/configuration?file=staff-management-system%7Cconfiguration).
+
### Shifts {#shifts}
-Staff members can clock in and out of shifts using the `/duty manage` command. The panel updates its title depending on the current shift state (_On Duty_, _On Break_, _Shift Ended_), so staff always see what action is available next. While on duty, they can take multiple breaks - the bot counts them and includes the break count in the end-of-shift DM report.
+Staff members can go on- or off-duty and take a break with the `/duty manage` command, where a panel shows up with some information about their shift time, and 3 buttons to manage their duty. The embed title also changes dynamically depending on their duty status. Staff can take multiple breaks per shift, and those break times are not included in the total duty time - the staff member also receives an end-of-shift (EOS) report in their DM's after they end their shift.
-If **Shift change logging** is enabled in the Shifts configuration, the bot posts an audit entry to the configured channel every time a shift is started, paused, resumed, ended, or voided.
+Shift types are fully custom, meaning you can have multiple different shift types with a custom name. You can also set a minimum shift time duration, which requires staff members to have a minimum of x minutes of shift time or the time they went on duty doesn't count towards their total duty time and quota (if enabled) - default is 0, meaning all shift time counts.
-Supervisors can view who is currently on duty with `/duty active` and see duty time statistics with `/duty leaderboard` and `/duty time`.
+A duty leaderboard can also be enabled, letting staff members check the top people who have the most shift time, going from most to least. The leaderboard timeframe is also customizable, from weekly, monthly and all-time.
-### Leave of Absence & Reduced Activity {#status}
+A quota system can also be enabled, requiring staff to meet the specific amount of hours of duty time each week/month to meet your quota. These can be different per role, and their highest role that's listed there, counts as their quota. The quota can also be 0 hours, meaning that specific role has no quota.
+The quota status shows on their `/duty time` command.
-Staff members can request a Leave of Absence or Reduced Activity status using `/loa request` or `/reduced-activity request`. Supervisors can approve or deny requests. Active statuses can be viewed with the `list` subcommand.
+If 'Log Shift Changes' is enabled in the Shifts configuration, then the bot will send an embed with information each time a staff member changes their shift, with actions such as: Going on-duty, taking a break, going off duty and admin actions - these changes can be logged in a custom channel, if that's not set, then it will use the default log channel.
-### Infractions {#infractions}
+Staff members can view who is currently on duty with `/duty active`, see the duty time leaderboard with `/duty leaderboard` and see their (or someone else's) total duty time with `/duty time`.
-Supervisors can issue infractions to staff members using `/staff-management infraction issue`. Available infraction types include warnings, strikes, demotions, terminations, and under investigation. Staff can also be suspended with `/staff-management infraction suspend`, which temporarily removes their staff roles. Supervisors are prevented from issuing infractions or suspensions to themselves.
+### Leave of Absence & Reduced Activity status {#status}
-Infraction and suspension templates support a shared set of placeholders for customizing log messages and DMs: `%user%`, `%user-avatar%`, `%issuer-mention%`, `%issuer-name%`, `%issuer-avatar%`, `%type%`, `%reason%`, `%case-id%`, and `%end-date%` (plus `%duration%` for suspensions). Promotions and reviews use a parallel naming scheme (`%staff-mention%`, `%reviewer-mention%`, `%new-role-name%`, etc.) - see the relevant configuration page for the full list.
+You can configure if staff members can [request a Leave of Absence (LoA) and/or a Reduced Activity (RA)](https://scnx.app/glink?page=bot/configuration?file=staff-management-system%7Cstatus). LoA's are for staff members who want to go away and have little to no responsibilities to being staff, while a RA is for staff members who still want to actively work as staff, but do less copared to normal staff.
-### Promotions {#promotions}
+**Leave of Absence (LoA)**
+The LoA system can be enabled individually by enabling the 'Enable LoA System` option.
+After enabling that option, you will be able to select the LoA role given upon the start of their LoA, configure the maximum days they can request a LoA for, and if a LoA request requires approval or not.
+
+The LoA system is meant for staff who want to go on a temporary leave, and be exempt from the expected staff duties.
+
+**Reduced Activity (RA)**
+The RA system can be enabled individually by enabling the 'Enable RA System' option.
+After enabling that option, you will be able to select the RA role given upon the start of their RA, configure the maximum days they can request a RA for, and if a RA request requires approval or not.
+
+Additionally, you can:
+- Configure the status request channel where the requests for a status are sent (if approval is required)
+- Choose if you want to log status changes (Going on or off LoA/RA, extensions or early ends and other administrative actions)
+- Select the status log channel
+
+The RA system is meant for staff who want to go on a temporary leave, but can still do some limited work. Meaning they can still do some staff duties, but are expected to do (way) less than normal.
+
+### Staff Profiles {#profiles}
-Supervisors can promote staff members using `/staff-management promotion promote`. Promotions can optionally assign a new role automatically and send an announcement to a configured channel.
+[Staff profiles](https://scnx.app/glink?page=bot/configuration?file=staff-management-system|configs/profiles) allow (staff) members to have their own profile with their own nickname and introduction.
-### Staff Profiles & Reviews {#profiles}
+You can also configure if you only want staff members and above to have a custom staff profile, or also allow all normal members to have a custom profile, and who can manually reset a (staff) member's profile (supervisor+ or management only).
-Each staff member has a profile that can be viewed with `/staff-management profile view`. Users can submit reviews and ratings for staff members. Profiles track average ratings and review history.
+The profile embed is also customizable - edit it to your wishes!
### Activity Checks {#activity-checks}
-Management can start periodic activity checks targeting specific roles with `/staff-management activity-check start`. Staff members must respond within the configured time window. Results can be viewed and managed by supervisors.
+[Activity checks](https://scnx.app/glink?page=bot/configuration?file=staff-management-system%7Cactivity-checks) can be enabled, which allows supervisors+ to start periodic activity checks that sends a customizable message into the configured channel, which allows staff members to click on a button to confirm that they are active and have seen the message.
-When a check ends - whether manually via `/staff-management activity-check end`, automatically when the duration expires, or when the round is cancelled - the original check message is replaced with the configurable **Ended Activity Check Embed**. The end embed renders the user who started the check (or "system" for automated checks) and the number of staff members who responded.
+Settings to configure the system to your needs:
+- Roles to Check: Select the role(s) you want the bot to check that respond to the button - leave this empty to use the standard staff role from the [general configuration](https://scnx.app/glink?page=bot/configuration?file=staff-management-system%7Cconfiguration).
+- Check Duration: The duration of activity checks in *hours*. The maximum value is 168 hours (1 week) and the minimum is 1 hour.
+- Activity Check Embed & Ended Activity Check Embed: Configure the activity check messages to your wishes! The ended message is the message that replaces the original message when it has ended. (⚠️ Warning: If your original activity check message is components V2, then the ended message also needs to be components V2, otherwise it won't be edited - this is due to Discord limitations)
+- Default Sending Channel: The channel to send the activity checks in - this can be overridden when using the `/staff-management activity-check start` command.
-### Duty admin panel {#duty-admin}
+Additionally, you can **automate** the activity checks. You can set an interval (weekly, biweekly, monthly or use a cronjob) to select how often it should send the activity check, set the cronjob if you selected 'Cronjob', select the weekday that the activity check should happen, and the week of the month if you selected 'Monthly' in the interval.
+
+Results are sent into the configured results channel (leave empty to use the default log channel), with an option to ping a custom role when the results are posted.
-Supervisors can manage other staff members' shifts via `/duty admin`. Buttons in the admin panel refresh inline rather than posting a new ephemeral message each time, so the panel stays clean across multiple actions.
## Commands {#commands}
@@ -73,101 +123,291 @@ Supervisors can manage other staff members' shifts via `/duty admin`. Buttons in
| Command | Description |
| -------------------------------------------------- | ----------------------------------------------------- |
-| `/duty manage` | Clock in/out of a shift or take a break. |
-| `/duty active` | View currently on-duty staff members. |
-| `/duty leaderboard` | View the duty time leaderboard. |
-| `/duty time` | View your own duty time statistics. |
-| `/duty admin` | Administrative duty management (supervisor+). |
-| `/loa request` | Request a Leave of Absence. |
-| `/loa view` | View your current LoA status. |
-| `/loa list` | List all active LoA requests. |
-| `/loa admin` | Approve, deny, or manage LoA requests (supervisor+). |
-| `/reduced-activity request` | Request Reduced Activity status. |
-| `/reduced-activity view` | View your current Reduced Activity status. |
-| `/reduced-activity list` | List all active Reduced Activity statuses. |
-| `/reduced-activity admin` | Manage Reduced Activity requests (supervisor+). |
-| `/staff-management panel` | Open the staff management panel. |
-| `/staff-management infraction issue user:` | Issue an infraction to a staff member. |
-| `/staff-management infraction suspend user:` | Suspend a staff member. |
-| `/staff-management infraction history user:` | View a staff member's infraction history. |
-| `/staff-management infraction void` | Void an existing infraction. |
-| `/staff-management promotion promote user:` | Promote a staff member. |
-| `/staff-management promotion history user:` | View a staff member's promotion history. |
-| `/staff-management activity-check start` | Start a new activity check. |
-| `/staff-management activity-check view` | View an active or past activity check. |
-| `/staff-management activity-check end` | End an active activity check. |
-| `/staff-management profile view user:` | View a staff member's profile. |
-| `/staff-management profile edit` | Edit your own staff profile. |
-| `/staff-management profile wipe user:` | Wipe a staff member's profile data (management only). |
-| `/staff-management review submit user:` | Submit a review for a staff member. |
-| `/staff-management review history user:` | View a staff member's review history. |
+| `/duty active` | View who are currently on duty or on break per shift type.|
+| `/duty manage [type:]` | Responds with a duty management panel allowing staff to clock on-duty, off-duty, or go on break.|
+| `/duty time [type:]` | View your own or another user's cumulative duty time statistics and previous shifts history.|
+| `/duty leaderboard [type:]` | View the server leaderboard showing staff with the most tracked duty time sorted by shift type.|
+| `/duty admin user:` | Allows supervisors and management to adjust a staff member's shift logs, manually add time, force them off duty, or process forced duty time removals via a custom time duration string.|
+| `/staff-status loa request duration: reason:` | Submit a formal request for a Leave of Absence with a specified duration and reasoning.|
+| `/staff-status loa view [user:]` | Check your own or another targeted staff member's active Leave of Absence duration and details.|
+| `/staff-status loa list filter:` | List filtered LoA tracking status records based on your choice (`Active`, `Expired`, or `All`).|
+| `/staff-status loa admin user:` | Administrative command to extend or manually end a staff member's active LoA, or view their complete history.|
+| `/staff-status ra request duration: reason:` | Submit a request for a period of Reduced Activity with a specified duration and reasoning.|
+| `/staff-status ra view [user:]` | Check your own or another target staff member's active Reduced Activity details.|
+| `/staff-status ra list filter:` | List filtered Reduced Activity status records based on your choice (`Active`, `Expired`, or `All`).|
+| `/staff-status ra admin user:` | Administrative command to extend or manually end a staff member's active RA period, or view their complete history.|
+| `/staff-management panel user:` | Opens an interactive dashboard overview of a staff member with details per feature and data deletion options. Supervisors+ only.|
+| `/staff-management infraction issue user: type: reason: [expiry:]`| Issue an infraction type to a staff member.|
+| `/staff-management infraction suspend user: duration: reason:` | Temporarily suspend a staff member, stripping their staff roles automatically for a custom duration.|
+| `/staff-management infraction history user:` | View the infractions history of an user.|
+| `/staff-management infraction void reference:`| Voids an infraction via its case ID or message link while keeping the history.|
+| `/staff-management promotion promote user: rank: reason: [channel:]`| Promotes a staff member. Optionally in a different channel than the default with the 'channel' option.|
+| `/staff-management promotion history user:` | View the promotions history of an user.|
+| `/staff-management activity-check start [channel:]`| Manually starts an activity check for the staff members.|
+| `/staff-management activity-check view` | Check the current status of the current active activity check.|
+| `/staff-management activity-check end` | Manually ends an activity check.|
+| `/staff-management profile view [user:]` | View the profile of a (staff) member.|
+| `/staff-management profile edit` | Allows (staff) members to edit their profile.|
+| `/staff-management profile wipe user:` | Allows supervisors+ or management+ to reset the profile of a (staff) member.|
+| `/staff-management review submit user: stars: comment:`| Submit a review to a (staff) member with a rating (1 - 5 stars) and feedback.|
+| `/staff-management review history [user:]` | View the review history of an user.|
## Configuration {#configuration}
-This module has 8 configuration files. Open them in your [dashboard](https://scnx.app/glink?page=bot/configuration?query=staff-management-system).
-
-| Configuration File | Description |
-| ------------------ | -------------------------------------------------------------------------------------- |
-| General | Staff/supervisor/management roles, log channel, and general settings. |
-| Shifts | Duty types, shift quotas, leaderboard settings, and break configuration. |
-| Status | LoA and reduced activity settings, approval workflow, and role assignments. |
-| Infractions | Infraction types, suspension settings, DM notifications, and expiration. |
-| Promotions | Promotion announcements, role assignment, and notification settings. |
-| Reviews | Rating system settings, self-rating prevention, and access restrictions. |
-| Profiles | Staff profile fields and customization options. |
-| Activity Checks | Check windows, target roles, response tracking, and the customizable start/end embeds. |
+This module features multiple independent configuration files allowing you to tweak tracking logic. Open and manage them directly on your [dashboard](https://scnx.app/glink?page=bot/configuration?open-module=staff-management-system).
+
+### General Configuration {#configuration-configuration}
+
+Configure staff access levels and default log channels in the [general configuration](https://scnx.app/glink?page=bot/configuration?file=staff-management-system|configs/configuration).
+
+| Field | Description |
+| ------------------- | ------------------------------------------------------------------------------------------- |
+| Staff Roles | Role(s) that are granted permission to use basic staff utilities like managing their shifts, request a LoA/RA, receive reviews and more. |
+| Supervisor Roles | Role(s) authorized to review LoA/RA requests, manage staff profiles, issue infractions, promote staff members and more. |
+| Management Roles | Administrators holding full unrestricted access over module profiles and data deletionoptions.|
+| General Log Channel | The default logging channel for features that log events (such as status if enabled) |
+
+### Infractions Configuration {#configuration-infractions}
+
+Configure infractions and suspensions in the [infractions configuration](https://scnx.app/glink?page=bot/configuration?file=staff-management-system|configs/infractions).
+
+| Field | Description |
+| ------------------------------- | -------------------------------------------------------------------------------------------- |
+| Enable Infractions System | Enables the infractions system with custom infraction types and more. **Note: Due to a feature being used to hide this feature's command if it's disabled, your bot may require a restart to show this feature's commands.** |
+| Infraction Types | Custom infraction types with custom names. |
+| Enable Suspensions System | Toggles whether suspensions temporarily strip standard permissions from disciplined users. **Note: Due to a feature being used to hide this feature's command if it's disabled, your bot may require a restart to show this feature's commands.** |
+| Hierarchy Base Role | Threshold baseline. When suspended, the bot strips all roles positioned at or above this. |
+| Suspended Role (Optional) | An optional role to assign to a staff member when they are suspended. |
+| Suspension Announcement Message | The custom message that's sent when a staff member is suspended. |
+| Infraction Log Channel | Targeted destination channel where public infraction announcements and suspension embeds post.|
+| Infraction Announcement Message | The custom message that's sent when a staff member is infracted. |
+| DM User on infraction? | A toggle to choose if the infractions and suspensions are sent to the infracted user's DM's. |
+| Infraction DM Message | The custom message that's sent in the staff member's DM's when they are infracted. |
+| Suspension DM Message | The custom message that's sent in the staff member's DM's when they are suspended. |
+
+### Promotions Configuration {#configuration-promotions}
+
+Configure the promotions system in the [promotions configuration](https://scnx.app/glink?page=bot/configuration?file=staff-management-system|configs/promotions).
+
+| Field | Description |
+| ---------------------------- | ------------------------------------------------------------------------------------------------- |
+| Enable Promotions System | Enables the promotions system to promote staff members. **Note: Due to a feature being used to hide this feature's command if it's disabled, your bot may require a restart to show this feature's commands.** |
+| Auto-Add New Role? | Automatically adds the role the user is being promoted to. **Warning: it's recommended to KEEP THIS SETTING OFF to prevent unauthorised server raids with granting dangerous roles to users. View the note below this table for a more detailed explanation.** |
+| Promotions Channel | The channel where the promotions are sent. Can be overridden manually via the command. |
+| Promotion Announcement Embed | The custom message that's sent when a staff member is promoted. |
+| DM Promoted User? | Toggles whether the bot sends a promotion message to the member's DM's as well. |
+| Promotion DM Embed | The custom message sent to the user's DM's when they are promoted. |
+
+**⚠️ Warnings: Keeping the 'Auto-Add new role' setting OFF is RECOMMENDED. This is to avoid raids by letting malicious users grant dangerous roles with dangerous permissions to users, which helps them raid the server. The bot CANNOT PROTECT ITSELF against malicious actions, and we cannot guarantee a no-raid usage with this setting enabled. Please enable backups when having this setting enabled!**
+
+### Reviews Configuration {#configuration-reviews}
+
+Configure reviews settings in the [reviews configuration](https://scnx.app/glink?page=bot/configuration?file=staff-management-system|configs/reviews).
+
+| Field | Description |
+| ---------------------------- | --------------------------------------------------------------------------------------- |
+| Enable Reviews System | Enables the reviews system, allowing users to review (staff) members. **Note: Due to a feature being used to hide this feature's command if it's disabled, your bot may require a restart to show this feature's commands.** |
+| Reviews Log Channel | The channel where reviews are sent. |
+| Allow Self-Rating? | Toggles whether staff can rate themselves. |
+| Only let users review staff | When enabled, users can only review staff members. |
+| Review Message | The customizable (embed) message that gets sent to the review channel. |
+
+### Shifts Configuration {#configuration-shifts}
+
+Configure the shifts sytem for staff members, duty types, shift time leaderboards, shift time quota's for specific roles, and manage the shifts status logging in the [shifts configuration](https://scnx.app/glink?page=bot/configuration?file=staff-management-system|configs/shifts).
+
+| Field | Description |
+| ------------------------------ | ------------------------------------------------------------------------------------------------- |
+| Enable Shifts | Toggles the shifts system for staff members, allowing them to go on-duty, on-break, or off-duty and more. **Note: Due to a feature being used to hide this feature's command if it's disabled, your bot may require a restart to show this feature's commands.** |
+| On-Duty Role | An optional role that is given to a staff member when going on-duty. This is removed when the staff member goes off-duty. This is handy to easily identify poeple who are on-duty without using any commands. |
+| Duty Types | Custom categories of duty types to allow staff to select their appropriate purpose of duty. |
+| Minimum Shift Duration (minutes)| The minimum duration in minutes that staff have to be on-duty for it to count towards their total duty time. |
+| Enable duty leaderboard | Toggles the ability for staff to see a leaderboard of the people with the most duty time at the top. |
+| Leaderboard Timeframe | Sets the timeframe of the total duty times shown in the leaderboard. Choose between weekly, monthly and all-time. |
+| Enable Quota System | Toggles the quota system, allowing you to configure duty times expected from members with a specific role. |
+| Quota Timeframe | Sets the timeframe that is counted towards the quota. Choose between Weekly or Monthly. |
+| Role Quotas | Assigns expected duty times per role. The user's quota will be their highest configured role. |
+| Log Shift Changes | Toggles the detailed shift logs. These logs shift updates from an user, such as starting/ending their shift. |
+| Channel for shift change logs | The channel where shift change logs are sent. Leave empty to use the general log channel. |
+
+### Status Configuration {#configuration-status}
+
+Configure the Leave of Absence and Reduced Activity systems, allowing staff to be temporarily exempted from staff duties in the [status conifugration](https://scnx.app/glink?page=bot/configuration?file=staff-management-system|configs/status).
+
+| Field | Description |
+| ---------------------------- | --------------------------------------------------------------------------------------------- |
+| Enable Status System | Toggles the status system, allowing you to toggle LoA and RA settings. |
+| Enable LoA System | Toggles whether staff can request Leave of Absences. **Note: Due to a feature being used to hide this feature's command if it's disabled, your bot may require a restart to show this feature's commands.** |
+| LoA Role | Optional role assigned to staff members when they are on LoA. This is optional, but recommended to easily identify who is on LoA. |
+| Maximum LoA Duration (days) | The limit in days of how long staff members can request an LoA. Their LoA is autoamtically denied and not requested when their LoA duration request exceeds that limit. |
+| Require Approval for LoA? | Toggles if LoA requests require an approval from supervisors to see if their LoA is a valid reason and duration. |
+| Enable RA System | Toggles whether staff can request Reduced Activities. **Note: Due to a feature being used to hide this feature's command if it's disabled, your bot may require a restart to show this feature's commands.** |
+| RA Role | Optional role assigned to staff members when they are on RA. This is optional, but recommended to easily identify who is on RA. |
+| Maximum RA Duration (days) | The limit in days of how long staff members can request an LoA. Their LoA is autoamtically denied and not requested when their LoA duration request exceeds that limit. |
+| Require Approval for RA? | Toggles if LoA requests require an approval from supervisors to see if their LoA is a valid reason and duration. |
+| Status Request Channel | The channel where status requests are sent for approval/denial. |
+| Log status changes | Toggles the status logging, which logs all changes in statuses from staff members. This sends embed logs about changes to a staff member's LoA/RA, such as starting it, ending it, the status being extended etc. |
+| Status Change Log Channel | The channel where status changes are logged. This can be empty to use the general log channel. |
+
+### Profiles Configuration {#configuration-profiles}
+
+Configure (staff) profiles with a custom profile embed and other settings in the [staff profile configuration](https://scnx.app/glink?page=bot/configuration?file=staff-management-system|configs/profiles).
+
+| Field | Description |
+| ------------------------------ | --------------------------------------------------------------------------------------------- |
+| Enable Staff Profiles | Toggles the staff profile system, allowing staff members to set their custom nickname and introduction. **Note: Due to a feature being used to hide this feature's command if it's disabled, your bot may require a restart to show this feature's commands.** |
+| Only allow staff and higher to have their own customizable profile | Toggles that only staff members can edit their profile or not. If this is disabled, then all members can have their own profile with their own nickname and introduction. |
+| Profile Moderation Permission | Sets whether supervisors+ or management+ can wipe the profile of a different (staff) member. |
+| Profile Embed | Customize the profile embed here. ⚠️ **Note: Although this feature works without an embed, an embed is still highly recommended for the best experience.** |
+
+### Activity Checks Configuration {#configuration-activity-checks}
+
+Configue manual and automated activity checks to check if staff are active in the [activity checks configuration](https://scnx.app/glink?page=bot/configuration?file=staff-management-system|configs/activity-checks).
+
+| Field | Description |
+| ---------------------------- | ------------------------------------------------------------------------------------------------- |
+| Enable Activity Checks | Toggles the Activity Checks system, allowing you to check the activity of staff members, both manually as automatically. |
+| Roles to Check | Roles that are expected to respond to the activity check. Leave empty to use the general staff roles. |
+| Check Duration (Hours) | The duration of the activity check. The minimum is 1hr and the maximum is 168hrs (1 week) |
+| Activity Check Embed | The customizable activity check embed. |
+| Ended Activity Check Embed | The customizable activity check embed, which is edited from the activity check embed when the activity check has ended. |
+| Default Sending Channel | The channel to send the acitvity checks in. This can be overriden in the command. |
+| Exceptions rule | The rule to select who are exempted from the activity checks. Choose between none, only LoA, only RA, LoA and RA or use a custom role. |
+| Custom Exception Roles | The role(s) that are exempted from activity checks when 'custom role(s)' was chosen above. |
+| Automated Checks | Toggles the automated activity checks system. |
+| Automated Check Interval | Choose how often you want the activity check to be (Weekly, Biweekly, Monthly or a cronjob) |
+| Automated Check Cronjob | Custom cronjob to set the frequency exactly how you want. *Note: Using a cronjob generator like https://crontab.guru/ is recommended, unless you know yourself how a cronjob pattern works.* |
+| Automated Check Week Day | The day of the week to send the activity check. |
+| Automated Check Month Week | The week of the month to send the activity check when 'monthly' was chosen for the interval. |
+| Results Channel | The channel where the activity check results are posted. The results include who reacted, who didn't, and who were exempted. Leave empty to use the general log channel. |
+| Ping on Results | Toggles whether a role is pinged with the results or not. |
+| Roles to Ping | The custom role(s) to ping with the results. |
-### Notable fields {#configuration-fields}
+## Troubleshooting {#troubleshooting}
-| File | Field | Description |
-| --------------- | -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| Activity Checks | Activity Check Embed | The message sent when an activity check starts. Supports placeholders `%end-time%`, `%duration%`, `%staff-mention%`, `%supervisor-mention%`, `%management-mention%`, and `%initiator%` (renders "system" for automated checks). |
-| Activity Checks | Ended Activity Check Embed | The message that replaces the start embed when the check ends. Supports the same placeholders as the start embed plus `%responded-count%`. |
-| Promotions | Auto-Add New Role? | If enabled, the bot automatically gives the promoted user the new rank role. Defaults to **disabled** for new servers - automatic role assignment can expose a server to abuse if a promoter has access to high-permission roles. |
+Sometimes you can experience issues that may not be as easy to fix. Most of the issues that you might experience will be listed here, where you can see the possible fixes to your issue. If your issue is not listed here, or it did not solve your issue, feel free to contact [our support team](https://scnx.app/help).
-## Troubleshooting {#troubleshooting}
+
+ I am promoting someone with the setting 'auto-add new role' enabled, but the role is not given to the user
+
+ This usually happens because the bot is missing permissions to add the role to that user. The bot might have a role that's lower than the role that the user is being promoted to. This is a Discord hierarchy issue, and not a bug. Try the steps below to fix the issue:
+ * Make sure your bot has a role that's higher than the role you are promoting a user to. We recommend setting a role higher than all the lower-risk roles you would promote users to. Higher-risk roles (users who can kick/ban etc) are not recommended to be given roles automatically due to raid protection.
+ * It is recommended to give your bot the `administrator` permission to allow the bot to give roles to users. This could also be the issue that the bot does not have permission to add/remove roles to users.
+
- Staff members cannot use commands
-
- - Make sure their role is listed in the Staff Roles in the General Configuration.
- - Some commands require Supervisor Roles or Management Roles - check the command descriptions above.
-
+ Ending a staff shift did not add time to the total shift time of an user
+
+ - Make sure to check the **Minimum Shift Duration** setting in the Shifts Configuration. The user might've ended a shift before meeting that amount of on-duty time. All shifts under that time period are not counted towards the total shift time to avoid shift farming. Set it to 0 (default) to count all shifts.
+
- Suspension is not removing roles
-
- - Ensure the bot's role is positioned above the staff member's roles in the role hierarchy.
- - Check that a Suspension Role is configured in the Infractions configuration.
-
+ When suspending an user, the roles are not being removed.
+
+ - Make sure that the user's highest role is **lower** than the bot's highest role. The bot cannot manage roles above it's own role.
+ - Make sure that the suspension heirachy role is set properly in the infractions configuration so that the role is actually on the user, and roles above it are removed.
+ - Make sure that the bot has the `Manage Roles` permission to remove/add roles. We recommend giving the bot `administrator` permission to have all permissions without worrying with individual permissions.
+
- Activity check messages still look active after the check ended
-
- - Older messages that pre-date the close-on-end fix may still show the original embed. New checks ended after the update will be properly replaced with the configured Ended Activity Check Embed, including for Components V2 templates.
-
+ After an activity check ended, the activity check message never changes to the ended message.
+
+ - Make sure that both messages use either the default message editor, or components V2 (message editor V4). If one of either messages use a different type of Discord message, it won't update. This is a Discord limitation and not a bug.
+ - Make sure the bot isn't running with any issues when the activity check ends. Check the results message to see if it actually ended (properly). Other problems are liekly logged in the error-logs of your bot. Please contact our support team via https://scnx.app/help for help with that.
+
- LoA requests are not being processed
-
- - LoA requests need to be approved by a user with a Supervisor Role or higher.
- - Check the Status configuration for maximum duration limits - requests exceeding the limit may be automatically rejected.
-
+ I enabled promotions/infractions/reviews/LoA/RA/staff profiles/shifts but I cannot see the commands for that feature.
+
+ The features listed use a system where the commands for those features are hidden when they are not utilised. This gives the user a better experience overall with less commands being seen.
+ But it many cases this requries you to restart the bot to re-sync the commands. A configuration reload can sometimes also let the commands appear, but restarting is more reliable.
+ If you don't see the commands even after restarting, please refresh your Discord client (Ctrl + R on desktop, fully close and re-open Discord for mobile) to see the commands.
## Stored data {#data-usage}
-The following data is stored by this module:
+The Staff Managament Module is a big module, which means many things can be stored at once. To commit to the fullest of our transparency commitment, I will explain everything that's stored with multiple details.
+There is a sub-category for each database model, meaning you get an insight for every single bit of data stored. use the dropdown to see the details of that stored data.
+
+### Activity Checks {#data-usage-activity-checks}
+
+This feature contains **o** individually deletable stored data pieces.
+
+ Activity Check ID
+
+ The activity check ID is currently used internally. Each activity check has an unique ID, making sure that people react to the correct activity check, and that results are based on the exact activity check.
+
+
+
+ Message ID
+
+ The message ID is stored to keep track of the activity check message that was sent, and to identify the exact message to edit after the activity check has ended.
+
+
+
+ Channel ID
+
+ The channel ID is stored to keep track of where the activity check message was sent. This is shown to the user when initiating an activity check, and when checking the status of the activity check.
+
-- **Staff profiles**: User ID, suspension status, and profile data for each tracked staff member.
-- **Shifts**: Clock-in/out timestamps, break records, and duty type for each shift.
-- **Infractions**: Infraction type, issuer, target, reason, and expiration date.
-- **Promotions**: Promotion records including old/new role, issuer, and timestamp.
-- **Reviews**: Reviewer ID, target ID, rating, and review text.
-- **LoA requests**: Requester, reason, duration, approval status, and approver.
-- **Activity checks**: Check records, target roles, and individual response tracking.
+
+ End Time
+
+ The end time is stored to keep track of when an activity check has ended. As this is a date, it records the exact date + time when it has ended.
+
+
+
+ Target Roles
+
+ The target roles are stored to keep track of which roles are required to respond to the activity check. This is a critical part of this feature. Without this, activity checks will be completely unusable.
+
+
+
+ Responded Users
+
+ The responded users are stored to check who responded to the activity checks. This is also shown at the end results.
+
+
+
+ Status
+
+ The activity check status is stored to check if an activity check is currently active or inactive.
+
+
+
+ Iniatior ID
+
+ The initiator ID is stored to know who started the activity check. This is null if it's an automated check (showcased as 'system' in the activity check message)
+
+
+
+ Is Automated
+
+ The check of 'isAutomated' is stored to see if the check was an automated check. This is an additional check besides initiator ID to make sure it was an automated check.
+
+
+**ActivityCheckResponse model below**
+*All data from the ActivityCheckResponse model is deleted when deleting the activity check data from an user.*
+
+
+ ID
+
+ The response ID is used to assign an unique number (ID) to each user as the "response ID". This is mainly stored to prevent double-entries.
+
+
+
+ Activity Check ID
+
+ The activity check ID is stored to recognize which activity check the user responded to.
+
+
+
+ User ID
+
+ The user ID is stored to know which user responded to the activity check.
+
To remove all data stored by this module, [purge the module database](/docs/custom-bot/additional-features#reset-module-database).