Staff Handbook Configuration
When dashboard-backed configuration is enabled, use the dashboard first because live settings may be stored in MongoDB instead of reading only local JSON5 files.
Config Files
- Main config:
configuration/staff_handbook.json5 - Content config:
configuration/staff_handbook_content.json5 - Language config:
configuration/staff_handbook_lang.json5 - Plugin entry:
plugins/staff_handbook/main.js
Main Fields
| Field | Type | Default / Template Value | Notes |
|---|---|---|---|
enabled | boolean | true | Turns the command and interactions on or off. |
response.ephemeral | boolean | true | Shows handbook replies only to the member who opened them. |
command.category | string | management | Athena help category for /handbook. |
ui.embed_color | string | #d7263d | Six-digit hex color used for embeds. |
ui.show_timestamp | boolean | true | Adds a timestamp to handbook embeds. |
ui.max_visible_options | integer | 20 | Categories or situations shown per menu page. Allowed range: 1-25. |
ui.button_styles.main_menu | string | Primary | Main Menu button style. |
ui.button_styles.back | string | Secondary | Back button style. |
ui.button_styles.previous | string | Secondary | Previous button style. |
ui.button_styles.next | string | Secondary | Next button style. |
access.allowed_role_ids | array | [] | Roles allowed to open the handbook. |
access.allowed_user_ids | array | [] | Users allowed to open the handbook. |
access.senior_role_ids | array | [] | Roles allowed to view senior-only items. |
access.senior_user_ids | array | [] | Users allowed to view senior-only items. |
search.enabled | boolean | true | Adds the optional search argument. |
search.max_results | integer | 25 | Maximum displayed search results. Allowed range: 1-25. |
search.max_query_length | integer | 100 | Maximum search length. Allowed range: 1-100. |
permissions.handbook_command | string | member | Athena permission level for the slash command. |
permissions.handbook_components | string | member | Athena permission level for menus and buttons. |
Button styles must be Primary, Secondary, Success, or Danger.
Content Structure
staff_handbook_content.json5 contains a categories array. Each category has
its own pages array.
{
config: {
categories: [
{
id: "player_reports",
label: "Player Reports",
description: "Review and resolve player reports.",
senior_only: false,
required_role_ids: [],
required_user_ids: [],
pages: [
{
id: "first_response",
label: "First Response",
description: "Handle a new report.",
title: "Player Report First Response",
summary: "Collect the facts and keep the case private.",
senior_only: false,
required_role_ids: [],
required_user_ids: [],
steps: [
"Ask for the player name, time, and evidence."
],
action_guidance: [
"Escalate threats or active exploits to senior staff."
],
evidence_requirements: [
"Screenshots, clips, logs, or message links."
],
notes: [
"Keep sensitive reports in staff channels."
],
links: [
{
label: "Server Rules",
url: "https://example.com/rules"
}
]
}
]
}
]
}
}Required Category Fields
| Field | Notes |
|---|---|
id | 1-40 letters, numbers, underscores, or hyphens. Must be unique. |
label | Category name shown in the embed and select menu. |
description | Short category explanation. |
pages | Array containing one or more valid pages. |
Required Page Fields
| Field | Notes |
|---|---|
id | 1-40 letters, numbers, underscores, or hyphens. Must be unique inside the category. |
label | Short select-menu label. |
title | Page embed title. |
summary or description | Page introduction. At least one must contain text. |
steps | Array of steps. Use [] when the section is not needed. |
action_guidance | Array of punishment or action guidance. |
evidence_requirements | Array of evidence requirements. |
notes | Array of notes. |
links is optional. Each link needs a label and an http:// or https:// URL.
senior_only, required_role_ids, and required_user_ids are optional on both
categories and pages.
Discord limits select menus to 25 options and embed fields to 1,024 characters. The plugin paginates menus and trims long rendered fields, but short, focused pages remain easier for staff to use.
Language Config
Use staff_handbook_lang.json5 to change:
- The command, description, and search option wording
- Error and access messages
- Embed titles and field labels
- Menu placeholders and navigation button labels
- Category, situation, and page count labels
The templates accept {query}, {count}, {current}, and {total} where the
matching message or label uses those values. AthenaBot also resolves configured
custom emoji names.