RMRP Staff
An internal Discord bot of the RMRP project for staff position management: granting and revoking staff positions, automatic recalculation of roles and nicknames, and operation accounting. The bot is built exclusively for the project's internal Discord servers; it does not provide services to third parties and is not listed in public bot directories.
ποΈ Positions and roles
One command β one personnel record: a position is granted or revoked and the member's role set is recalculated automatically from the project configuration.
π§© Reliability
Every operation is written to a log with WAL semantics and a .bak copy; unfinished
operations are replayed on startup and grants to temporarily absent members are not lost.
π Audit
A dedicated command log records who did what, when and with which result. It is available to the project administration only.
Purpose
The bot serves the personnel workflow of the RMRP project on its internal Discord servers. It turns administration decisions into Discord changes: it grants and revokes the roles that correspond to a position, department and rank, and updates the member's nickname in the approved format. Access rules are computed from the initiator's current position, so commands are available only to those the project's hierarchy authorises.
Features
- Granting and revoking positions: staff, leader and curator positions, including rules about which ranks and departments (Government / Criminal) a given member may grant or revoke.
- Cascading role recalculation: when a position is granted or revoked, the bot re-determines all of the member's positions from the project's config (disambiguating ambiguous matches and using a rank cache) and recalculates the whole role set, so the result does not depend on the order of operations.
- Nicknames: the nickname is updated according to the position and restored to its original value when the position is revoked.
- Bulk operations: granting and revoking from a fixed list of server positions for planned personnel changes.
- Deferred grants: if a member is temporarily absent from the server, the grant is not lost β it is queued and applied when the member joins or by a background reconciliation every 10 minutes.
- Crash recovery: an operation log with WAL semantics and replay of unfinished operations on startup.
- Continuous state control: a full scan of all servers every 30 minutes, flushes to disk every 30 seconds and hourly backups of service data.
- Member events and the media monitor: the bot tracks members joining, leaving and having their roles changed (the server's audit log), watches the media-server administrators and cascades the removal of auxiliary roles when a person loses their media roles or leaves the project's server; revoking a position also removes the member from the project's service servers listed in a configured set (game servers and project administrator accounts are not affected) - which is why the requested permissions include View Audit Log and Kick Members.
- Reference commands: your own current position, the revocation log, a data integrity check and the deferred-grant queue.
Commands
All commands are Discord slash commands; access is checked against the caller's position.
| Command | What it does |
|---|---|
/setstaff | Grants a staff position: the roles matching the position, department and rank. |
/setleader | Grants a leader position. |
/setcurator | Grants a curator position. |
/setname | Sets a member's nickname in the approved format. |
/unsetleader | Revokes a leader position and recalculates roles. |
/unsetcurator | Revokes a curator position and recalculates roles. |
/resetname | Restores the nickname to its original value. |
/staffall | Bulk grant of roles from a fixed list of server positions. |
/staffallremove | Bulk revocation of roles from the same list. |
/removallogs | Revocation log: who revoked a position, from whom and when. |
/myrank | Shows the caller their current position and related roles. |
/validate | Integrity check: consistency of roles, nicknames and the position journal. |
/pendinggrants | Lists and applies the queue of deferred grants. |
Access rules and hierarchy
A dedicated permission engine computes whether an operation is allowed, based on the initiator's current position: personnel commands are open to the project's senior positions, and for each position the rules define which ranks and departments it may grant or revoke. Positions are matched to Discord roles through the project configuration, and ambiguous name matches are resolved automatically. No one can grant or revoke a position above their own level.
Discord permissions used
Manage Roles Manage Nicknames Kick Members View Audit Log View Channels Send Messages Embed Links Read Message History
Of the privileged gateway intents only Server Members Intent is used β it is required to look up a member and their roles during personnel operations. Message Content Intent is not requested: the bot does not read message content and works entirely through slash commands. Presence Intent is not used either.
Data processed and why
| Data | Why | Where it is stored |
|---|---|---|
| Member IDs, usernames and server nicknames | to identify the member, their current position, and to update the nickname in the project format | the bot's service JSON files on the Operator's server |
| Role IDs, position names, departments and ranks | to compute the role set for a position and to validate the initiator's rights | project configuration and service JSON files |
| Personnel operation log: who granted or revoked what, for whom and when | audit of administration decisions and recovery of unfinished operations | operation log and position journal (JSON, with a backup copy) |
| Deferred grant queue (member, server, roles and nickname to apply) | so a personnel decision is not lost while the member is temporarily absent (TTL 14 days) | a service JSON file of the bot |
| Technical logs of operation and warnings | diagnostics of failures and monitoring of Discord API load | log files on the Operator's server |
The bot does not process direct messages, channel content, voice data, payment, medical or location data, or data of members of other Discord servers.
Retention and reliability
- current personnel records (who holds which position) β while the member remains a member of the project's staff and as long as the personnel records require it;
- operation and audit logs β up to 12 months, unless a longer period is needed to resolve a dispute;
- deferred grant queue β 14 days;
- operation logs β 14 days (rotated), local backups of service data β 7 days;
- on a justified request from a user, the data is deleted within no more than 30 days.
The bot's service /health endpoint is available locally only
(http://127.0.0.1:8080/health) and is not exposed to the internet.
The bot's data is used solely for the internal personnel records of the RMRP project. It is never sold and never shared with third parties for marketing purposes β see the Privacy Policy and the Terms of Use for details.
Legal documents
- Privacy Policy β RMRP Staff section (RU)
- Terms of Use β RMRP Staff section (RU)
- Full Privacy Policy Β· Terms of Use
Contact
Official project Discord: discord.gg/6Az63EPEAA
Player support: forum.rmrp.ru β help
Project support e-mail: donate@rmrp.ru
Project website: rmrp.ru