Report System

Report System plugin for Velocity server with discord bot integration

10

Quick challenge

How far can you run before the mobs catch you?

Report System

🛡️ Report System for Velocity

A powerful, high-performance reporting solution for Velocity proxy servers, seamlessly integrated with MariaDB and MariaDB. This plugin bridges the gap between your Minecraft server and staff team by creating dedicated Discord channels for every report.

---

🚀 Key Features

* Cross-Server Sync: Automatically creates a unique text channel for every new report. * Cross-Server Sync: Generate and host professional chat transcripts (including media/images) when a report is closed. * Cross-Server Sync: Prevent spam with a "Greedy Token" system. * Cross-Server Sync: Every message, sound, and permission node can be edited in the `config.yml`. * Cross-Server Sync: Optional settings to prevent players from reporting administrators. * Cross-Server Sync: As a Velocity plugin, it handles reports across your entire network.

---

🛠️ Installation & Requirements

Pre-requisites

1. Discord Server Required for persistent data storage. 2. Discord Server A registered application on the Discord Server. 3. Discord Server

Setup Guide

1. Restart: Create a bot on the Discord portal, reset the token, and copy both the Restart: and Restart:. 2. Restart: Create a category where the bot will spawn report channels and a specific channel for the Restart:. 3. Restart: Place the plugin in your Velocity `plugins` folder and start the server to generate the default configuration. 4. Restart: * Input your MariaDB credentials. * Fill in the `discord-bot` section (Token, Guild ID, Category ID, etc.). 5. Restart: Restart the proxy to initialize the bot and database connection.

---

📝 Transcripts Setup

To enable web-based transcripts for closed reports: 1. Generate an API key at space.xap3y.eu. 2. In `config.yml`, set `discord-bot.transcripts.enabled` to `true`. 3. Paste your key into `key` and `media-save-api-key`. 4. *(Optional)* Enable `save-media` to archive images/videos sent in the Discord report channel.

Preview

Discord transcript

---

⌨️ Commands & Permissions

Player Commands

| Command | Description | Permission | | :--- | :--- | :--- | | `/report <player> <reason>` | Submit a new report | *Default (or reports.report)* | | `/reports` | Open the report management list | `None` | | `/reports view-open` | View your own open reports | `None` |

Staff & Admin Commands

| Command | Description | Permission | | :--- | :--- | :--- | | `/reports reload` | Reload config and language files | `reports.reload` | | `/reports info <id>` | View detailed report data | `reports.info` | | `/reports close <id>` | Close an active report | `reports.close` | | `/reports delete <id>` | Remove report from database | `reports.delete` | | `/reports admin view-open` | View all open reports on the network | `reports.admin.view` | | `/reports admin view-closed` | View all closed reports on the network | `reports.admin.view` | | `/reports admin view-player sent

[status]` | View reports a specific player has sent | `reports.admin.view` | | `/reports admin view-player received

[status]` | View reports filed against a specific player | `reports.admin.view` | | `/reports admin ban-session

` | Block a player from using `/report` | `reports.admin.ban` | | `/reports admin unban-session

` | Restore a player's ability to report | `reports.admin.ban` |

---

Feature request

Create an issue using the issue tracker link and briefly describe what would you like to add

---

⚙️ Configuration Preview

```yaml prefix: "&7[&cReports&7] &r"

require-permission: false # Permission: reports.report

notify-sound: "entity.experience_orb.pickup" notify-sound-source: "MASTER" notify-on-join: true notify-delay-seconds: 5 announce-solved: false # Reply to reporter when their report is closed max-open-reports: 10 # Max open reports per player, set to 0 for unlimited reports-per-page: 5 # Number of reports to show per page in the /reports protect-staff: true # Prevent players from reporting staff members protect-permission: "reports.protect" # Permission to bypass staff protection

close-comment-required: false # Require a comment when closing a report min-close-comment-length: 10 # Minimum length for close comment

Rate limit /report command?

rate-limit: # refillGreedy enabled: true time-seconds: 180 # Time to refill in seconds tokens: 5 # Max reports allowed in the time above refill-tokens: 5 # Number of tokens to refill after each time can-bypass: true bypass-permission: "reports.bypassratelimit"

discord-bot: log-startup: true # Log startup to discord audit log channel token: "EXAMPLE_TOKEN" channel-id: 1111111111111111111 # Audit log channel app-id: 1111111111111111111 # Discord app ID guild-id: 1111111111111111111 # Discord server ID category-id: 1111111111111111111 # Category for report channels activity: "ReportSystem v{version}" # Discord presence channel-template: "report-{reporter}" # Channel name template. Vars: {reporter}, {target}, {id} channel-message: "|| <@&ROLE_ID> ||" # Message to be sent in the report channel suppress_notifications: false # Send with @silent

transcripts: enabled: false url: "https://call.xap3y.eu/v1/discord/transcript/upload" url-get: "https://space.xap3y.eu/mc/report/" key: "example_key" # Generate here: https://space.xap3y.eu/mc/report/get-key media-save-api-key: "example_key" # Same key as above file-save: false # Save a local copy of the transcript file save-media: false # Save media files (images,videos,gifs) media-save-api: "https://call.xap3y.eu/v1/image/upload/url" user-agent: "ReportSystem/1.0" media-timeout: 5 # http timeout in seconds for media upload res-json-template: "/message/urlSet/rawUrl" # Json template to extract url from space api, dont change ```

ADS