--- title: "Shifts & Duty" slug: "shifts" category: "Servers" order: 3 description: "Track staff duty time, breaks, shift waves, and dispatch availability." --- # 1 - Introduction Shifts track when staff are on duty, on break, or off duty. CADLY uses shift state for **duty analytics**, dispatch access, staff availability, and shift-wave compliance. Staff manage their shift with interactive Discord components through **/shift manage**. Administrators can manage other users with **/shift admin** and review duty data in the panel. Shifts are the operational heartbeat of CADLY. They answer basic questions such as who is currently working, how long a staff member has been active, whether a dispatcher should be allowed to create calls, and whether a unit should appear in the dispatch roster. For leadership, shift history gives a fairer view of activity than message counts or manual sign-in sheets. Staff can start and end shifts themselves, while managers can correct obvious mistakes from the panel. ## 1.1 - Table of Contents | Section | What it covers | |---|---| | [Working Shifts](#2---working-shifts) | Starting, ending, and breaking shifts | | [Shift Waves](#3---shift-waves) | Compliance windows and requirements | | [Settings](#4---settings--configuration) | Shifts settings reference | | [Troubleshooting](#5---troubleshooting-common-issues) | Common shift problems | ## 1.2 - Links to Related Documents - [Server Settings](/docs/server-settings) - [Dispatch & CAD](/docs/dispatch) - [Leave of Absence](/docs/loa) # 2 - Working Shifts ## 2.1 - Starting and Ending Run **/shift manage** to open the shift panel. If Server B is enabled, CADLY asks which server slot the shift belongs to. If the server is in mono-server mode, shifts default to Server A. The same panel lets staff start a shift, go on break, return from break, and end the shift. CADLY records active time and break time separately. Break time is tracked so staff do not need to end a shift for short pauses. Use breaks for food, short inactivity, or temporary away-from-keyboard periods. End the shift when the staff member is no longer available for duty. If your server uses dispatch, encourage staff to keep shift state accurate. Dispatch can require an active or on-break shift before allowing actions, so stale duty state can block staff or leave unavailable units visible. ## 2.2 - Admin Shift Control Run **/shift admin** with `user`, `action`, and optional `server` to manage another member's shift. Supported admin actions are `end` and `break`. This requires **Manage Shifts** permission. CADLY checks active shift state and refuses the action if the target is not on shift. ## 2.3 - Leaderboard and Online Staff Run **/shift leaderboard** to view top staff by total shift time. Run **/shift online** to list staff currently on shift, grouped by Server A and Server B when dual-server mode is enabled. ## 2.4 - Staff Request Run **/staffrequest** to post a staff request message to the configured staff request channel. The command respects the staff request permission, cooldown, ping role, and custom message settings. This is useful when a scene needs more moderators, when dispatch needs units, or when a supervisor wants to call available staff without pinging everyone manually. Keep the cooldown high enough to prevent spam, but low enough that urgent requests can still be made during busy sessions. ```cadly-mock type: status title: Shift overview meta: Server A duty board status: Live items: - On Duty | 14 staff - On Break | 3 staff - Current Wave | 42 minutes left - Staff Request | Cooldown ready ``` # 3 - Shift Waves A **shift wave** is a compliance window for required staff hours. Waves can run manually or auto-cycle after a configured number of days. CADLY can track requirements globally or per CADLY role. At the end of a wave, you can review compliance and optionally warn or strike users who missed their requirement. Use global requirements when every staff member has the same expected activity. Use per-role requirements when command staff, supervisors, and probationary staff have different expectations. Shift waves work best when staff know the schedule in advance. Announce the wave length, required hours, and enforcement action before enabling automatic enforcement. ## 3.1 - Exemptions Shift waves can skip new members and users with active LOA. New-member exemptions use the configured grace period. # 4 - Settings / Configuration ## 4.1 - Shifts Module ```cadly-mock type: command title: /shift manage meta: Staff control command status: Staff only items: - action | start, break, resume, end - user | Optional target member - server | Server A or Server B ``` ### Enable Shifts Turns the shift module on or off. When off, shift pages and commands fail closed. **Default:** on | **Requires:** none ### Shift Types Configures the shift types members can start. Each type has a name, description, allowed roles, and max on-duty value. **Default:** one `Default Shift` type | **Requires:** none Common examples are Staff, Supervisor, Dispatch, Training, or Department-specific duty. If `maxOnDuty` is `0`, there is no limit for that shift type. ### Log Channel Channel for shift starts, breaks, and end-of-shift summaries. **Default:** none | **Requires:** none ## 4.2 - Shift Roles ### On-Duty Role (Server A) Role assigned when a user is actively on duty on Server A. **Default:** none | **Requires:** none ### On-Break Role (Server A) Role assigned when a user is on break on Server A. **Default:** none | **Requires:** none ### On-Duty Role (Server B) Role assigned when a user is actively on duty on Server B. **Default:** none | **Requires:** none ### On-Break Role (Server B) Role assigned when a user is on break on Server B. **Default:** none | **Requires:** none ## 4.3 - Staff Request ### Enable Staff Request Feature Allows users with the staff request permission to request more staff. **Default:** on | **Requires:** none ### Staff Request Channel Channel where staff request alerts are posted. **Default:** none | **Requires:** none ### Staff Request Ping Optional role mentioned in staff request alerts. **Default:** none | **Requires:** none ### Staff Request Cooldown Minimum minutes between staff requests per user. **Default:** 30 minutes | **Requires:** none ### Staff Request Button Label Custom label for the request action. **Default:** `Request Staff` | **Requires:** none ## 4.4 - Shift Waves ### Enable Shift Waves Turns wave tracking on or off. **Default:** on | **Requires:** none ### Wave Duration Number of days before a wave auto-cycles. Set to `0` for manual-only. **Default:** 0 | **Requires:** none ### Requirement Mode Choose global required hours or per-role required hours. **Default:** per role | **Requires:** none ### Enforcement Action Action at wave end when a member misses the requirement: manual review, warning, or strike. **Default:** manual | **Requires:** none Start with manual review when introducing shift waves. Automatic warning or strike enforcement should only be enabled after staff understand the policy and LOA exemptions are configured correctly. ### Wave Log Channel Channel for wave start, end, and compliance reports. **Default:** none | **Requires:** none # 5 - Troubleshooting Common Issues ## 5.1 - Staff Cannot Start a Shift Check that Shifts are enabled, at least one shift type exists, and the member has a role allowed by the selected shift type. ## 5.2 - Duty Roles Are Not Changing Move the CADLY bot role above the duty and break roles. Discord role hierarchy prevents CADLY from assigning roles above the bot. ## 5.3 - Staff Request Does Not Post Set a Staff Request Channel and verify the bot can send messages there. Also check the per-user cooldown. # 6 - Getting Support and Resources If you need help, several resources are available: - [CADLY Documentation](/docs): Detailed reference for all features. - [CADLY Support Server](https://discord.gg/cadly): Join for **fast help** from the team. - [CADLY Email Support](mailto:admin@cadly.me): Reach out **via email** for direct support.