Free

ds-reporterpro

DS Reporter – FiveM Player Reporter

Player report menu with player and admin options. Reports are sent to Discord via webhook.

Features

  • Players: Submit reports with category, optional subject, priority (if configured), optional reported player (ID/name), and description. Cooldown to prevent spam.

  • Admins: View all reports in the Logs tab with stats (Total / Open / Resolved), mark as resolved, or delete. New reports trigger an in-game notification and optional sound. Logs tab is visible only to allowed users.

  • Discord: When Config.Discord.Enabled = true, each new report is sent to a Discord channel via webhook (includes subject and priority). When disabled, reports are not sent to Discord and appear only in the admin Logs tab in the UI.

  • Commands: /fixreport — force-close the report UI (anyone). /fixreportall — force-close report UI for all players (admin only).

Installation

  1. Drop the ds-reporterpro folder into your resources directory.

  2. Add to server.cfg:


ensure ds-reporterpro
  1. Configure config.lua (see below).

  2. Give admin permission (see Admin access below).

Config (config.lua)

  • Command: Config.Command = "report" — command to open the menu (e.g. /report).

  • Keybind: Config.Keybind = { key = "F7", default = "F7" } or nil to disable.

  • Categories: Config.Categories — list of report categories (e.g. Cheating, RDM, Fail RP, Other).

  • Priorities: Config.Priorities — optional list of { label = "Medium", value = "medium" } to show a priority dropdown. Leave empty to hide.

  • Notifications: Config.Notifications.useSound = true — play a sound for admins when a new report is submitted.

  • Subject/description length: Config.MaxSubjectLength = 120, Config.MaxDescriptionLength = 1000.

  • Discord:

  • Config.Discord.Enabled = true

  • Config.Discord.WebhookURL = "https://discord.com/api/webhooks/..." — create in Discord: Channel → Edit → Integrations → Webhooks.

  • Optional: Config.Discord.AdminWebhookURL for a separate log channel for resolve/delete actions.

  • Admin check: Config.AdminCheck = "ace" (see Admin access).

  • Cooldown: Config.ReportCooldown = 60 — seconds between reports per player.

Admin access (Logs tab)

Admins see the Logs tab. Set this in config.lua:

  • Config.AdminCheck = "discord" — no ACE; admin by Discord role ID.

Set Config.DiscordGuildId, Config.DiscordBotToken, and Config.DiscordAdminRoleId.

The script checks if the player’s Discord account has that role on your server.

You need a Discord Bot with Server Members Intent enabled (Developer Portal → Bot).

Role is cached for 5 minutes to avoid spamming the Discord API.

  • Config.AdminCheck = "ace" — use ACE permission Config.AdminAce.

Default Config.AdminAce = "command" so the script checks for the command permission. If you already have:


add_ace group.admin command allow

then no extra line is needed: everyone in group.admin (and qbcore.god / qbcore.admin if they inherit from it) gets the Logs tab.

To use a separate permission instead, set Config.AdminAce = "ds-reporter.admin" and add add_ace group.admin ds-reporter.admin allow in server.cfg.

  • Quick test (no ACE): Add your license to Config.AdminLicenses (works with any AdminCheck).

  • Config.AdminCheck = "export" — script calls exports['ds-reporter']:IsAdmin(source). Implement that export and return true for admins.

Discord webhook

  1. In Discord, open the channel where you want reports.

  2. Channel → Edit Channel → Integrations → Webhooks → New Webhook.

  3. Copy the Webhook URL and set Config.Discord.WebhookURL in config.lua.

New reports will appear as embeds with: Report ID, category, reporter name/ID, reported player (if any), description, and identifiers (License, Discord, etc.). If Enabled = false, reports are not sent to Discord and are only visible in the in-game admin Logs tab.

Reports are stored in memory in saved.json For persistence.

← Back to Docs