▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Плагины/Report System
Report System

Report System

Report System plugin for Velocity server with discord bot integration

Оцените первым
129
0

🛡️ Report System for Velocity

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


🚀 Key Features

  • Discord Integration: Automatically creates a unique text channel for every new report.
  • Web Transcripts: Generate and host professional chat transcripts (including media/images) when a report is closed.
  • Advanced Rate Limiting: Prevent spam with a "Greedy Token" system.
  • Fully Customizable: Every message, sound, and permission node can be edited in the config.yml.
  • Staff Protection: 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. MariaDB Database: Required for persistent data storage.
  2. Discord Bot: A registered application on the Discord Developer Portal.
  3. Discord Server

Setup Guide

  1. Bot Setup: Create a bot on the Discord portal, reset the token, and copy both the Token and Application ID.
  2. Discord Layout: Create a category where the bot will spawn report channels and a specific channel for the Audit Log.
  3. Initial Run: Place the plugin in your Velocity plugins folder and start the server to generate the default configuration.
  4. Configuration: * 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

CommandDescriptionPermission
/report <player> <reason>Submit a new reportDefault (or reports.report)
/reportsOpen the report management listNone
/reports view-openView your own open reportsNone

Staff & Admin Commands

CommandDescriptionPermission
/reports reloadReload config and language filesreports.reload
/reports info <id>View detailed report datareports.info
/reports close <id>Close an active reportreports.close
/reports delete <id>Remove report from databasereports.delete
/reports admin view-openView all open reports on the networkreports.admin.view
/reports admin view-closedView all closed reports on the networkreports.admin.view
/reports admin view-player sent <p> [status]View reports a specific player has sentreports.admin.view
/reports admin view-player received <p> [status]View reports filed against a specific playerreports.admin.view
/reports admin ban-session <p>Block a player from using /reportreports.admin.ban
/reports admin unban-session <p>Restore a player's ability to reportreports.admin.ban

Feature request

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


⚙️ Configuration Preview
prefix: "&7[&cReports&7] &r"

enabled: true

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: true # 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

# Live website control portal. The API key falls back to discord-bot.transcripts.key when blank.
# This key is different from transcripts key!!!
portal:
    enabled: false
    debug: false # Logs WebSocket details including the API key; disable after troubleshooting
    websocket-url: "wss://call.xap3y.eu/ws/mc-reports"
    user-agent: "ReportSystem/{version}"
    api-key: "" # Message me on discord for key: xap3y
    reconnect-seconds: 10

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"

# Limit how often one reporter can report the same player.
same-player-rate-limit:
    enabled: true
    max-reports: 1
    time-seconds: 600 # 10 minutes

discord-bot:
    log-startup: true # Log startup to discord audit log channel
    token: "EXAMPLE_TOKEN"
    guild-id: 1111111111111111111 # Discord server ID
    channel-id: 1111111111111111111 # Audit log channel
    app-id: 1111111111111111111 # Discord app ID
    category-id: 1111111111111111111 # Category for report channels
    use-topic: false
    channel-topic: "topic" # {open} | {closed} | {total}
    activity: "ReportSystem v{version}" # Discord presence
    channel-template: "report-{reporter}" # {reporter}, {target}, {id}
    channel-message: "|| <@&ROLE_ID> ||" # Message to be sent in the report channel
    suppress-notifications: false # Send with @silent
    send-chat-history: true
    chat-history-messages-per-page: 20
admin-role-ids:
    - 1111111111111111111
    - 2222222222222222222

transcripts:
    enabled: false
    url: "https://call.xap3y.eu/v1/discord/transcript/upload"
    url-get: "https://space.xap3y.eu/mc/report/"
    url-get-ending: "?ref=test"
    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-attachments: true # Save all Discord attachments before their CDN links expire
    media-save-api: "https://call.xap3y.eu/v1/image/upload/url"
    user-agent: "ReportSystem/1.5.0"
    media-timeout: 10 # HTTP timeout in seconds for attachment upload
    res-json-template: "/message/urlSet/rawUrl" # Json template to extract url from space api, dont change

database: host: "localhost" port: 3306 database: "reports_db" username: "reports_user" password: "securepassword" max-pool-size: 10 minIdle: 2

pool-refresh: true # Refresh the connection pool every 30 minutes
refresh-interval: 600000 # milliseconds (10 minutes) - how often to refresh current open reports from the database

lang: only-player: "&cThis command can only be executed by a player." no-permission: "&cYou do not have permission to execute this command." reload: "&aConfiguration reloaded successfully." plugin-disabled: "&cReportSystem is currently disabled." fail: "&cAn error occurred while processing your request." report-usage: "&cUsage: /report " report-success: "&aYou have successfully reported &c{target}." report-yourself: "&cYou cannot report yourself." report-cooldown: "&cYou are on cooldown. Please wait and try again later." report-rate-limit: "&cYou're doing that too fast. Try again in {sec} seconds." report-same-player-rate-limit: "&cYou have reported this player too many times recently. Try again in {minutes} minutes." report-announce: "&c{reporter} &ahas reported &c{target} &afor &c{reason}&a." report-join-notify: "&cThere are &e&l{count} &r&copened reports!" report-max-reports: "&cYou cannot have more than &f{max} &copen reports at the same time." report-no-reason: "&cWrong usage! &f/report " report-no-player: "&cWrong usage! &f/report " player-not-found: "&cPlayer &cnot found." report-close-no-id: "&cWrong usage! &f/reports close [reason]" report-close-no-reason: "&cYou must provide a reason for closing the report. &f/reports close " report-delete-no-id: "&cWrong usage! &f/reports delete " report-info-no-id: "&cWrong usage! &f/reports info " report-not-found: "&cReport with ID &f{id} &cnot found."

report-already-closed: "&cReport with ID &f{id} &cis already closed."
report-closed: "&aYou have successfully closed report ID &c{id}"
report-close-discord-error: "&cAn error occurred while closing the report in Discord."
report-deleted: "&aYou have successfully deleted report ID &c{id}"
report-delete-discord-error: "&cAn error occurred while deleting the report in Discord."
report-already-deleted: "&cReport with ID &f{id} &cis already deleted."
no-reports-found: "&cNo reports found."
closed-reports-header: "&cClosed Reports"
report-ban: "&cYou cannot submit a report."
report-ban-already: "&cYou are already banned &f{player}&c from submitting reports."
report-unban-already: "&cPlayer &f{player}&c is not banned from submitting reports."
report-ban-success: "&aYou have successfully banned &f{player}&a from submitting reports."
report-unban-success: "&aYou have successfully unbanned &f{player}&a from submitting reports."
report-close-reason-too-short: "&cThe close reason must be at least &f{min} &ccharacters long."
open-reports-header: "&aOpen Reports"
new-report: "New Report"
page: "Page"
time: "Time"
reason: "Reason"
reported-player: "Reported Player"
reported-by: "Reported By"
closed-by: "Closed By"
deleted-by: "Deleted By"
report-is-closed: "Report Closed"
report-is-deleted: "Report Deleted"
closed-at: "Closed At"
comment: "Comment"
view: "View"
prev: "Prev"
next: "Next"
close-report: "Close Report"
close-reason: "Close Reason"
close-reason-lore: "Reason for closing the report (optional)"
close-report-lore: "Click to close this report."
report-solved-announce: "&aYour report with ID &c{id} &ahas been closed."
report-solved-details-button: "view"
report-solved-details-hover: "&7Close reason: &e{reason}\n&7Closed by: &e{closer}\n&7Closed at: &e{time}"
report-solved-no-reason: "No reason provided"
report-solved-unknown-closer: "Unknown"
report-solved-unknown-time: "Unknown"
page-out-of-range: "&4Internal error: Page number out of range."
report-protected: "&cYou cannot report this player."

# Discord Locale
no-permission-button: "You do not have permission to interact with this button."
no-permission-modal: "You do not have permission to submit this form."
no-permission-command: "You do not have permission to execute this command."
close-button: "Close"
delete-button: "Delete"
chatlog-title: "Chat Log"
chatlog-empty: "No chat history is available for this report."
delete-btn-save-no-reason: "Save Transcript (No Reason)"
delete-btn-save-reason: "Save Transcript (With Reason)"
delete-btn-no-save-no-reason: "Delete Only (No Reason)"
delete-btn-no-save-reason: "Delete Only (With Reason)"
delete-btn-cancel: "Cancel"
delete-prompt: "Are you sure you want to delete report #{id}?\nPlease select an option below:"
delete-cancelled: "Cancelled deletion."
delete-reason-lore: "Reason for deleting the report"
delete-report: "Delete Report"
delete-reason: "Delete Reason"
        
</details>
Партнёрский материал

Сервер для плагина Report System - как у профи

Плагин Report System создан для серверов: на своём сервере вы настраиваете его под себя и решаете, кому играть. Создать сервер с плагином Report System для друзей можно за пару минут - BungeeHost всё уже подготовил.

Часто задаваемые вопросы

Совместимость

Minecraft: Java Edition

26.3.x26.2.x26.1.x1.21.x1.20.x1.19.x1.18.x

Платформы

Поддерживаемые окружения

Сервер

Ссылки


Создатели

Детали

Лицензия:
Опубликован:7 месяцев назад
Обновлён:3 недели назад
Главная