# 🛡️ Staff

It includes staff chat, admin chat, donor chat, staff list, staff AFK, and staff join/quit notices.

***

### What It Does

The Staff module gives your network a centralized proxy-side staff system.

It is useful for:

* Private staff communication
* Admin-only communication
* Donor or special channel communication
* Listing online staff members
* Marking staff members as AFK
* Staff join and quit notifications
* Optional cross-proxy synchronization with Redis
* Optional Discord webhook logging

***

### When To Enable It

Enable this module if your network has a staff team and you want proxy-side staff tools.

This module is recommended for most public networks.

It is especially useful if you want:

* Staff chat across the network
* Staff visibility tools
* Staff AFK status
* Staff join/quit notifications
* Staff communication mirrored to Discord
* Staff synchronization across multiple proxies

***

### Requirements

The Staff module can work without external dependencies.

However, Redis and Discord webhooks are recommended for advanced setups.

| Dependency       | Required | Purpose                                                   |
| ---------------- | -------- | --------------------------------------------------------- |
| Redis            | Optional | Recommended for cross-proxy staff synchronization.        |
| MySQL            | No       | Not required.                                             |
| MongoDB          | No       | Not required.                                             |
| PacketEvents     | No       | Not required.                                             |
| Discord Webhooks | Optional | Can be used for staff chat logs and staff join/quit logs. |
| PlaceholderAPI   | No       | Not required.                                             |

{% hint style="info" %}
If your network has multiple Velocity proxies, Redis is recommended for staff synchronization.
{% endhint %}

***

### Configuration File

The Staff module configuration file is located at:

```
plugins/NexusProxy/modules/staff/staff.yml
```

This file can contain settings for:

* Module status
* Staff chat settings
* Admin chat settings
* Donor chat settings
* Staff list settings
* Staff AFK settings
* Staff join/quit notices
* Command names
* Command aliases
* Permissions
* Messages
* Discord webhooks
* Redis synchronization options

{% hint style="warning" %}
Command names and aliases may be configurable in the module file.

The commands shown here are the default commands.
{% endhint %}

***

### Default Commands

| Command      | Description                                              |
| ------------ | -------------------------------------------------------- |
| `/staffchat` | Sends or toggles staff chat, depending on configuration. |
| `/adminchat` | Sends or toggles admin chat, depending on configuration. |
| `/donorchat` | Sends or toggles donor chat, depending on configuration. |
| `/stafflist` | Shows the online staff list.                             |
| `/staffafk`  | Toggles staff AFK status.                                |

***

### Permissions

| Permission                 | Description                                                       |
| -------------------------- | ----------------------------------------------------------------- |
| `nexusproxy.staffchat.*`   | Gives access to StaffChat permissions depending on configuration. |
| `nexusproxy.adminchat.*`   | Gives access to AdminChat permissions depending on configuration. |
| `nexusproxy.donorchat.*`   | Gives access to DonorChat permissions depending on configuration. |
| `nexusproxy.stafflist.use` | Allows usage of `/stafflist`.                                     |
| `nexusproxy.staffafk.use`  | Allows usage of `/staffafk`.                                      |
| `nexusproxy.staff.silent`  | Allows silent staff behavior, depending on configuration.         |

{% hint style="info" %}
Wildcard permissions may depend on how your permissions plugin handles wildcard nodes.

If needed, assign the specific permissions generated or documented in your module configuration.
{% endhint %}

***

### Recommended LuckPerms Setup

#### Staff

```
/lp group staff permission set nexusproxy.staffchat.* true
/lp group staff permission set nexusproxy.stafflist.use true
/lp group staff permission set nexusproxy.staffafk.use true
```

#### Admin

```
/lp group admin permission set nexusproxy.adminchat.* true
/lp group admin permission set nexusproxy.staff.silent true
```

#### Donor or special group

```
/lp group donor permission set nexusproxy.donorchat.* true
```

{% hint style="warning" %}
Only give admin chat and silent staff permissions to trusted staff groups.
{% endhint %}

***

### Staff Chat

Staff chat allows staff members to communicate privately across the network.

Depending on your configuration, staff chat may work as:

* A direct command message
* A toggleable chat mode
* A formatted staff-only channel

Example:

```
/staffchat Hello staff team.
```

***

### Admin Chat

Admin chat is intended for higher-level staff communication.

It can be used for:

* Management discussion
* Senior staff coordination
* Sensitive moderation decisions
* Internal administrative messages

Example:

```
/adminchat Please review the current report queue.
```

{% hint style="warning" %}
Admin chat should only be available to trusted administrators or senior staff.
{% endhint %}

***

### Donor Chat

Donor chat can be used as a special channel for donors, VIPs, or selected groups.

Example:

```
/donorchat Hello donors!
```

You can customize access through permissions and module configuration.

***

### Staff List

The staff list command shows online staff members.

Example:

```
/stafflist
```

This is useful for:

* Players checking available staff
* Staff checking who is online
* Networks that want visible moderation presence

Depending on configuration, silent staff may be hidden from the list.

***

### Staff AFK

The staff AFK command allows staff members to mark themselves as AFK.

Example:

```
/staffafk
```

This is useful for:

* Staff availability tracking
* Internal moderation coordination
* Avoiding confusion when staff are online but unavailable

***

### Staff Join and Quit Notices

The Staff module can notify staff when staff members join or leave the network.

This is useful for:

* Staff awareness
* Moderation coordination
* Internal activity tracking

If Discord webhooks are configured, join and quit logs may also be mirrored to Discord depending on your settings.

***

### Redis Synchronization

Redis is recommended if your network has multiple Velocity proxies.

With Redis, staff-related data can be synchronized across proxies.

Use Redis if you want staff systems to work consistently in a multi-proxy setup.

{% hint style="info" %}
For multi-proxy networks, every proxy should use the same Redis settings and a unique `cluster.proxy_id`.
{% endhint %}

***

### Discord Webhooks

The Staff module can optionally use Discord webhooks for staff-related logs.

Discord webhooks may be used for:

* Staff chat logging
* Staff join logs
* Staff quit logs
* Internal staff activity logging

Webhook mode only requires a Discord webhook URL.

{% hint style="warning" %}
Do not share private staff webhook URLs publicly.

Anyone with the webhook URL may be able to send messages to that Discord channel.
{% endhint %}

***

### Common Use Cases

#### Send a staff chat message

```
/staffchat Player issue on survival.
```

***

#### Send an admin chat message

```
/adminchat Please check the proxy logs.
```

***

#### Send a donor chat message

```
/donorchat Thanks for supporting the server!
```

***

#### View online staff

```
/stafflist
```

***

#### Toggle staff AFK

```
/staffafk
```

***

### Setup Tips

* Give staff chat access to normal staff members.
* Give admin chat access only to senior staff.
* Give staff silent permissions only to trusted staff.
* Configure Discord webhooks if you want staff logs in Discord.
* Enable Redis for multi-proxy staff synchronization.
* Review all message formats before publishing the network.
* Check `staff.yml` if you want to change command names or aliases.

***

### Common Issues

#### Staff chat does not work

Check that:

* The Staff module is enabled.
* The player has the required staff chat permission.
* The command name was not changed in `staff.yml`.
* Another plugin is not overriding `/staffchat`.

***

#### Admin chat does not work

Check that:

* The player has the correct admin chat permission.
* Admin chat is enabled in the module configuration.
* The command name was not changed.
* Another plugin is not overriding `/adminchat`.

***

#### Staff list does not show a staff member

Check that:

* The staff member has the correct staff permissions.
* The staff member is not hidden by silent staff settings.
* Redis is configured correctly if using multiple proxies.
* The staff list settings are configured correctly.

***

#### Staff AFK does not work

Check that:

* The player has `nexusproxy.staffafk.use`.
* The Staff module is enabled.
* Staff AFK is enabled in the module configuration.
* The command name was not changed.

***

#### Staff sync does not work across proxies

Check that:

* Redis is enabled.
* Every proxy uses the same Redis settings.
* Every proxy uses the same `channel_prefix`.
* Every proxy has a unique `cluster.proxy_id`.
* `/nexusproxy storage` shows Redis as connected.

***

#### Discord webhook does not send messages

Check that:

* The webhook URL is correct.
* The webhook is enabled in the module configuration.
* The Discord channel still exists.
* The proxy can connect to Discord.
* The webhook URL was not regenerated or deleted.

***

### Summary

The Staff module provides the main staff communication and visibility tools for NexusProxy.

It is recommended for networks with active staff teams, especially when combined with Redis for multi-proxy synchronization and Discord webhooks for staff logging.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://nexusproxy.nemesismc.net/modules/staff.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
