Shifts & Duty

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 Starting, ending, and breaking shifts

Shift Waves Compliance windows and requirements

Settings Shifts settings reference

Troubleshooting Common shift problems

1.2 - Links to Related Documents

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.

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

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:

Browse all CADLY documentation