Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
386 changes: 386 additions & 0 deletions locales/en.json

Large diffs are not rendered by default.

1,249 changes: 1,249 additions & 0 deletions modules/staff-management-system/commands/duty.js

Large diffs are not rendered by default.

722 changes: 722 additions & 0 deletions modules/staff-management-system/commands/staff-management.js

Large diffs are not rendered by default.

997 changes: 997 additions & 0 deletions modules/staff-management-system/commands/status.js

Large diffs are not rendered by default.

316 changes: 316 additions & 0 deletions modules/staff-management-system/configs/activity-checks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,316 @@
{
"filename": "activity-checks.json",
"humanName": {
"en": "Activity Checks"
},
"description": {
"en": "Configure automated staff activity checks and response logging."
},
"categories": [
{
"id": "general",
"icon": "fas fa-clipboard-user",
"displayName": {
"en": "General Settings"
}
},
{
"id": "exceptions",
"icon": "fa-solid fa-badge-check",
"displayName": {
"en": "Exceptions"
}
},
{
"id": "automation",
"icon": "far fa-robot",
"displayName": {
"en": "Automation"
}
},
{
"id": "results",
"icon": "fa-solid fa-check-to-slot",
"displayName": {
"en": "Results & Logging"
}
}
],
"content": [
{
"name": "enableActivityChecks",
"category": "general",
"humanName": {
"en": "Enable Activity Checks"
},
"description": {
"en": "Allows admins to start an activity check to see who is active."
},
"type": "boolean",
"default": {
"en": true
},
"elementToggle": true
},
{
"name": "targetRoles",
"category": "general",
"humanName": {
"en": "Roles to Check"
},
"description": {
"en": "The roles required to respond to the activity check. Anyone with these roles will be expected to click the button. Leave empty to default to the General Staff Roles."
},
"type": "array",
"content": "roleID",
"default": {
"en": []
},
"allowNull": true
},
{
"name": "timeframe",
"category": "general",
"humanName": {
"en": "Check Duration (Hours)"
},
"description": {
"en": "How long staff have to respond to the activity check (Max 168 hours / 1 week)."
},
"type": "integer",
"minValue": 1,
"maxValue": 168,
"default": {
"en": 24
}
},
{
"name": "checkMessage",
"category": "general",
"humanName": {
"en": "Activity Check Embed"
},
"description": {
"en": "The message sent when an activity check starts."
},
"type": "string",
"allowEmbed": true,
"params": [
{
"name": "endtime",
"description": {
"en": "The Discord timestamp when the check ends."
}
},
{
"name": "duration",
"description": {
"en": "The configured duration in hours."
}
}
],
"default": {
"en": {
"title": "📋 Staff Activity Check",
"description": "Please click the button below to confirm your activity before %endtime%.",
"color": "#3498db"
}
}
},
{
"name": "sendingChannel",
"category": "general",
"humanName": {
"en": "Default Sending Channel"
},
"description": {
"en": "The default channel where the activity check message will be posted. This can manually be overridden with the command."
},
"type": "channelID",
"channelTypes": [
"GUILD_TEXT"
],
"default": {
"en": ""
},
"allowNull": true
},
{
"name": "exceptionsType",
"category": "exceptions",
"humanName": {
"en": "Exceptions Rule"
},
"description": {
"en": "Who are excused from the activity checks?"
},
"type": "select",
"content": [
"No exceptions",
"Only LoA",
"Only RA",
"LoA and RA",
"Custom role(s)"
],
"default": {
"en": "LoA and RA"
}
},
{
"name": "customExceptionRoles",
"category": "exceptions",
"humanName": {
"en": "Custom Exception Roles"
},
"description": {
"en": "Only applies if 'Custom role(s)' is selected above."
},
"type": "array",
"content": "roleID",
"default": {
"en": []
},
"allowNull": true
},
{
"name": "automatedChecks",
"category": "automation",
"humanName": {
"en": "Automated Checks"
},
"description": {
"en": "If enabled, the bot will automatically start activity checks at configured intervals."
},
"type": "boolean",
"default": {
"en": false
}
},
{
"name": "automatedCheckInterval",
"category": "automation",
"humanName": {
"en": "Automated Check Interval"
},
"description": {
"en": "On which interval to start automatic checks. Choose cronjob for full customzation."
},
"type": "select",
"content": [
"Weekly",
"Biweekly",
"Monthly",
"Cronjob"
],
"default": {
"en": "Biweekly"
},
"dependsOn": "automatedChecks"
},
{
"name": "automatedCheckCronjob",
"category": "automation",
"humanName": {
"en": "Automated Check Cronjob"
},
"description": {
"en": "The cronjob schedule for automatic checks. Only applies if 'Cronjob' is selected above."
},
"type": "string",
"default": {
"en": ""
},
"dependsOn": "automatedChecks",
"allowNull": true
},
{
"name": "automatedCheckWeekDay",
"category": "automation",
"humanName": {
"en": "Automated Check Week Day"
},
"description": {
"en": "The week day to start automatic checks."
},
"type": "select",
"content": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"
],
"default":{
"en": "Monday"
},
"dependsOn": "automatedChecks"
},
{
"name": "automatedCheckMonthWeek",
"category": "automation",
"humanName": {
"en": "Automated Check Month Week"
},
"description": {
"en": "The week of the month to start automatic checks. Only applies if 'Monthly' is selected above."
},
"type": "integer",
"minValue": 1,
"maxValue": 4,
"default": {
"en": 1
},
"dependsOn": "automatedChecks"
},
{
"name": "logChannel",
"category": "results",
"humanName": {
"en": "Results Channel"
},
"description": {
"en": "Where the final results are posted. Leave empty if you want to use the general log channel."
},
"type": "channelID",
"default": {
"en": ""
},
"channelTypes": [
"GUILD_TEXT"
],
"allowNull": true
},
{
"name": "pingResults",
"category": "results",
"humanName": {
"en": "Ping on Results"
},
"description": {
"en": "Ping specific roles when the results are posted."
},
"type": "boolean",
"default": {
"en": false
}
},
{
"name": "pingRoles",
"category": "results",
"humanName": {
"en": "Roles to Ping"
},
"description": {
"en": "The roles to ping with the results message."
},
"type": "array",
"content": "roleID",
"default": {
"en": []
},
"dependsOn": "pingResults"
}
]
}
Loading