Scripts
Pyra Reports
Configuration

Configuration

All configuration lives in shared/config.lua. This file is not escrow-locked — you can edit it freely.

Debug

Config.Debug = false
KeyTypeDefaultWhat it does
Config.DebugbooleanfalseEnables verbose console logging and bypasses admin permission checks. Disable in production.

Commands

Config.Commands = {
    Player = 'report',
    Admin  = 'reports',
}
KeyTypeDefaultWhat it does
Config.Commands.Playerstring'report'The command players type to open the report UI.
Config.Commands.Adminstring'reports'The command admins type to open the admin panel.

Keybind

Config.Keybind = {
    Enable      = false,
    Key         = 'F6',
    Description = 'Open player report',
}
KeyTypeDefaultWhat it does
Config.Keybind.EnablebooleanfalseIf true, registers a keybind that opens the player report UI.
Config.Keybind.Keystring'F6'The default keybind key. Players can rebind this in their FiveM settings.
Config.Keybind.Descriptionstring'Open player report'Label shown in the FiveM keybind settings menu.

Categories

Config.Categories = {
    'Fail RP',
    'RDM',
    'VDM',
    'Cheating',
    'Exploiting',
    'Harassment',
    'Other',
}

The full list of report categories shown to players. Add, remove, or rename entries freely. Each entry is a plain string.

Urgent Categories

Config.UrgentCategories = {
    ['RDM']      = true,
    ['VDM']      = true,
    ['Cheating'] = true,
}

Categories listed here are flagged as urgent when a report is submitted. Urgent reports trigger an error-type admin notification (red) instead of info (blue) and are labelled URGENT in the admin panel. The key must exactly match a string in Config.Categories.

Cooldown

Config.Cooldown = 30
KeyTypeDefaultWhat it does
Config.Cooldownnumber30Seconds a player must wait between reports. Keyed to their identifier so it survives reconnects. Set to 0 to disable.

Max Open Reports

Config.MaxOpen = 100
KeyTypeDefaultWhat it does
Config.MaxOpennumber100Maximum number of reports loaded in the admin panel at once. Oldest reports beyond this limit are not shown.

Retention

Config.RetentionDays = 30
KeyTypeDefaultWhat it does
Config.RetentionDaysnumber30Reports older than this many days are automatically deleted on resource start and every 6 hours. Set to 0 to keep reports forever.

Discord Webhook

Config.Webhook = ''
Config.Brand   = '#8290F8'
KeyTypeDefaultWhat it does
Config.Webhookstring''Discord webhook URL. Leave empty to disable webhook notifications.
Config.Brandstring'#8290F8'Hex color used for the embed side-bar in Discord notifications.

Admin Ping

Config.PingAdmins = true
KeyTypeDefaultWhat it does
Config.PingAdminsbooleantrueIf true, all online admins receive an in-game notification and their panel live-refreshes when a new report is filed.

Actions

Config.Actions = {
    Resolve  = true,
    Bring    = true,
    Goto     = true,
    Spectate = true,
}

Controls which moderation actions are available in the admin panel. Set any to false to hide and disable that action.

KeyTypeDefaultWhat it does
Config.Actions.ResolvebooleantrueMark a report as resolved.
Config.Actions.BringbooleantrueTeleport the reporter to the admin's position.
Config.Actions.GotobooleantrueTeleport the admin to the reporter's position.
Config.Actions.SpectatebooleantrueSpectate the reporter in third-person (press E to exit).

Admin Permissions

Config.Admin = {
    Mode            = 'both',
    AcePermission   = 'pyra.reports',
    FrameworkGroups = { 'admin', 'superadmin', 'god' },
}
KeyTypeDefaultWhat it does
Config.Admin.Modestring'both'How admin status is determined. 'ace' = ACE permissions only. 'framework' = framework groups only. 'both' = either check passes.
Config.Admin.AcePermissionstring'pyra.reports'The ACE permission node checked when Mode is 'ace' or 'both'.
Config.Admin.FrameworkGroupstable{ 'admin', 'superadmin', 'god' }Framework job/group names that grant admin access when Mode is 'framework' or 'both'.

Validation

Config.Validate = {
    DescMax     = 600,
    MaxFieldLen = 64,
}
KeyTypeDefaultWhat it does
Config.Validate.DescMaxnumber600Maximum character length for the report description field.
Config.Validate.MaxFieldLennumber64Maximum character length for the title and location fields.

Locale

Config.Locale = {
    submitted   = 'Report submitted — staff have been notified.',
    cooldown    = 'You are reporting too fast. Please wait a moment.',
    noPerm      = 'You do not have permission to do that.',
    newReport   = 'New report filed',
    resolved    = 'Report marked as resolved.',
    invalid     = 'Your report is missing required details.',
    disabled    = 'That action is disabled.',
    targetOff   = 'That player is not online.',
    tpedByStaff = 'You were teleported by staff.',
}

All player-facing and admin-facing strings. Edit any value to translate or customise the messages.

KeyShown when
submittedPlayer successfully submits a report.
cooldownPlayer tries to report too soon after their last report.
noPermA non-admin tries to use an admin action.
newReportTitle of the admin notification and Discord embed for a new report.
resolvedAdmin resolves a report.
invalidReport submission fails validation.
disabledAdmin tries to use an action that is set to false in Config.Actions.
targetOffAdmin tries Bring/Goto/Spectate but the reporter is offline.
tpedByStaffShown to a player when an admin uses Bring on them.

© 2026 Pyra Studios — FiveM Scripts