Перейти к основному содержимому

Bugreport Manifest

Configure bug report behaviour

Manifest entry centralizing every configuration knob for the bug report system. The command is registered through the engine's [CustomCommandEntry] pipeline, so it follows engine reloads without any reflection.

Поля

ПолеТипПо умолчаниюОписание
commandNameString—Command name to open this bug report system (e.g., 'report', 'bugreport', 'ticket')
serverNameString—Name displayed when referencing this server in reports
sequenceStorageRef<BugReportSequenceArtifactEntry>—Artifact storing the reports and the incremental sequence for bug IDs
selectMenuTitleStringSelect CategoryTitle displayed on the category selection dialog
selectMenuBodyStringChoose a category for your report:Body text displayed on the category selection dialog
submitButtonTextStringSubmitText displayed on the submit button
categoryLayoutLinesInt1Number of lines to display categories across in the selection menu
maxReportsPerPlayerInt0Maximum amount of non-deleted reports each player may keep (0 = unlimited)
submissionCooldownInt0Cooldown in seconds between two submissions from the same player
notifyPermissionStringbugreport.notifyPermission required to receive staff notifications on new reports
adminPermissionStringbugreport.adminPermission required to use the list/status/delete admin subcommands
statusesList<BugReportStatus>defaultStatusesStatuses a report can be moved through with the status subcommand
BugReportStatus (3)
ПолеТипПо умолчаниюОписание
displayNameStringOpenDisplay name shown to players
descriptionString—Description of what this status means
sendNotificationBooleantrueWhether to send notifications when a report enters this status
categoriesList<BugReportCategory>defaultCategoriesAvailable categories shown to players, each with their own form inputs
BugReportCategory (4)
ПолеТипПо умолчаниюОписание
displayNameStringGeneralDisplay name shown in the menu
dialogTitleStringNew Bug ReportCustom title shown on the dialog window
inputsList<BugReportInput>emptyCustom inputs for this category (TextInput or BooleanInput only)Варианты:boolean_inputtext_input
boolean_input (3)
ПолеТипПо умолчаниюОписание
keyStringreproducible—
labelStringReproducible?Label for the toggle
initialBooleanfalseInitial state of the toggle
text_input (7)
ПолеТипПо умолчаниюОписание
keyStringdescription—
labelStringDescriptionLabel shown above the input
placeholderStringEnter text...Placeholder text shown when empty
minLengthInt0Minimum character length
maxLengthInt256Maximum character length
multilineBooleanfalseWhether to allow multiple lines
heightInt128Height in pixels when multiline; clamped to 1..512 by runtime
displayLineInt0Line number where this category appears in the selection menu (0-indexed)
messagesBugReportMessages—Player facing messages
BugReportMessages (13)
ПолеТипПо умолчаниюОписание
submissionSuccessStringThank you! Your report has been submitted as #{id}.—
submissionCooldownStringPlease wait {cooldown} before submitting another report.—
submissionLimitReachedStringYou have reached the maximum number of open reports.—
submissionMissingMessageStringPlease describe the issue before submitting a report.—
staffNotificationString{player} submitted bug report #{id} ({status}).—
reportNotFoundStringUnable to find bug report #{id}.—
statusUpdatedStringReport #{id} is now {status}.—
unknownStatusStringUnknown status '{status}'. Available statuses: {statuses}.—
reportDeletedStringReport #{id} has been deleted.—
noReportsFoundStringThere are no bug reports matching your filters.—
noCategoriesAvailableStringNo categories available for bug reports.—
listHeaderStringRecent bug reports:—
listEntryString#{id} - {title} [{status}] by {player} in {world}—
webhookBugReportWebhookSettings—Discord webhook delivery configuration
BugReportWebhookSettings (8)
ПолеТипПо умолчаниюОписание
destinationRef<WebhookDefinitionEntry>—Discord destination receiving the bug reports. Empty = no delivery.
threadNameTemplateStringBug #{id}: {title}Thread name template when posting to a Discord Forum channel (required for forums). Placeholders: {id},{title},{message},{category},{status},{player},{server},{world},{x},{y},{z},{gamemode},{created_at} + custom fieldsПлейсхолдерыМногострочное
defaultTagIdsList<String>emptyDefault Discord forum tag IDs applied to the created thread
pingRoleIdsList<String>emptyRole IDs to ping on new reports (formatted as Discord role IDs)
contentTemplateString—Optional message content sent alongside the embed (supports placeholders: {id},{title},{message},{category},{status},{player},{server},{world},{x},{y},{z},{gamemode},{created_at} and any custom field key)ПлейсхолдерыМногострочное
titleTemplateString{title}Title template for the Discord embed (placeholders: {id},{title},{message},{category},{status},{player},{server},{world},{x},{y},{z},{gamemode},{created_at} + custom fields)ПлейсхолдерыМногострочное
colorString#ff5555Hex color applied to the embed sidebar (e.g. #ff5555)
fieldsList<BugReportWebhookFieldTemplate>—Fields added to the embed body
BugReportWebhookFieldTemplate (2)
ПолеТипПо умолчаниюОписание
valueString{player}Value shown in the Discord embed field (placeholders supported)
inlineBooleanfalseDisplay this field on the same line when possible
discordCommandsBooleanfalseRegister Discord slash commands (list/status/delete) for this report system
discordAdminRoleIdsList<String>emptyDiscord role IDs allowed to use the slash commands (empty = server administrators only)

How to use it​

  1. Set commandName, serverName and a sequenceStorage artifact.
  2. Add categories. Each category has an id, a displayName shown on a button, a dialogTitle, and inputs (text or boolean). Categories with the same displayLine are on the same row of the selection dialog. There are no default categories.
  3. The form always has a title input (added for you if you do not define one). The text of the report is read from an input whose key is description. A report with neither a title nor a description is refused.
  4. maxReportsPerPlayer and submissionCooldown (seconds) limit spam; 0 means no limit.
  5. statuses is the list a report can move through, the first one being the status of a new report. sendNotification tells whether the player is told when a report enters it.
  6. In webhook, set destination to post each report to Discord. Empty means no delivery. titleTemplate, contentTemplate, fields and threadNameTemplate accept {id}, {title}, {message}, {category}, {status}, {player}, {server}, {world}, {x}, {y}, {z}, {gamemode}, {created_at} and the key of any input. Fill threadNameTemplate only for a forum channel, and set defaultTagIds for its tags.
  7. With discordCommands, the same report system can be managed from a Discord slash command (needs the bot).