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
Drop the
ds-reporterprofolder into yourresourcesdirectory.Add to
server.cfg:
ensure ds-reporterpro
Configure
config.lua(see below).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" }ornilto 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 = trueConfig.Discord.WebhookURL = "https://discord.com/api/webhooks/..."— create in Discord: Channel → Edit → Integrations → Webhooks.Optional:
Config.Discord.AdminWebhookURLfor 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 permissionConfig.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 callsexports['ds-reporter']:IsAdmin(source). Implement that export and returntruefor admins.
Discord webhook
In Discord, open the channel where you want reports.
Channel → Edit Channel → Integrations → Webhooks → New Webhook.
Copy the Webhook URL and set
Config.Discord.WebhookURLinconfig.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.