Reports (experimental)
With reports, members of your server can report a message or a person to your staff from Discord, and your Roblox game can send in what players report. Staff see each report on the Reports page in the dashboard and, if you choose a channel, in Discord. Reports are experimental: they work, but details may still change.
Switching reports on
- Open Settings → Experimental and switch on Take reports.
- Pick a Report channel, a staff channel where every new report is posted with buttons. Without one, reports only show in the dashboard.
- Give your staff roles See reports and, for whoever acts on them, Handle reports. See Staff roles and permissions.
The report commands show up in Discord within a minute. Switching reports off takes them away again; reports already sent stay.
What members do
Everybody in the server can report, without any permission. Each way ends with a short form or option where they say what happened.
| Where | How |
|---|---|
| A message | Right click it (on a phone, press and hold), then Apps, then Report message. They say what is wrong with it. |
| A person | Right click them, then Apps, then Report user. |
/report | With the member, what happened and, if they like, a link from Copy Message Link. |
A reported message is kept the moment somebody reports it, with up to five of its files, so deleting it afterwards changes nothing. Nobody can report themselves or the bot, and one person can send five reports an hour to a server.
Good to know
/report cannot work: Discord does not tell a bot which message a command replied to. The Apps menu on the message is the way to report one.Handling a report
| State | Means |
|---|---|
| Open | Nobody has taken it yet. |
| Claimed | Somebody on your team is looking at it. Hand back makes it open again. |
| Resolved | It was a real problem and something was done about it. |
| Dismissed | Nothing needed doing: it was not a problem, or it was already handled. |
- In the report channel: Claim says you are on it, Resolve and Dismiss close it. The post changes to show who did what. Open goes to the report in the dashboard.
- In the dashboard: Reports in the sidebar lists what is waiting. A report shows what was said, the message as it was, the evidence and anything a game sent. Resolve and Dismiss take a note.
- Punish from the report: Punish opens the punishment form with the person and the reason filled in. Once it is issued, the report is resolved and links to the punishment.
When a report from Discord is closed, the person who sent it gets a direct message that staff looked at it, with your note if you wrote one. They are never told what happened to anybody, and the person reported never learns who reported them.
Reports from your games
Both ways below need a game key: make one under Roblox → Connection → Game keys with the permission Send reports from a game or tool.
The ready-made report button
A Script you put in your game. Players get a Report button in the top right corner. Pressed, it grows into a small card right there, so nothing covers the game and they can keep playing: they pick a player in this server, choose what it is about and say what happened. The last chat messages of both players are sent with the report.
Good to know
Download technified-reports.rbxm
- In Roblox Studio, right click ServerScriptService → Insert from File and pick the file.
- Open the Script TechnifiedReports and fill in
SERVER_ID(your Discord server ID: right click the server in Discord, Copy Server ID) andKEY(the game key). - Under Game Settings → Security, switch on Allow HTTP Requests, then publish the place.
At the top of the Script you can change the categories players choose from, whether chat is sent, and how long a player waits between two reports (60 seconds). Test it in a live server or with Team Test: in a normal Play test, Studio gives players made up user ids that Technified refuses. If a report does not arrive, the reason is in the server output, starting with [Technified Reports].
Careful
Your own report menu
If your game already has a report menu, it can send what players report to the API itself. Do it from the server side of your game, so the key stays there. Send the report, then any files for it, such as the chat log:
local HttpService = game:GetService("HttpService")
local API = "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/reports"
local KEY = "tfy_..." -- keep it in ServerStorage or a server Script, never where players can read it
local function report(reporter: Player, target: Player, category: string, reason: string, chat: {string})
local answer = HttpService:RequestAsync({
Url = API,
Method = "POST",
Headers = { ["Authorization"] = "Bearer " .. KEY, ["Content-Type"] = "application/json" },
Body = HttpService:JSONEncode({
reporter = { robloxUserId = tostring(reporter.UserId), name = reporter.Name },
target = { robloxUserId = tostring(target.UserId), name = target.Name },
category = category,
reason = reason,
universeId = tostring(game.GameId),
jobId = game.JobId,
data = { chat = chat },
}),
})
if not answer.Success then return end
local sent = HttpService:JSONDecode(answer.Body)
-- Optional: a file with it, up to five of 8 MB each.
HttpService:RequestAsync({
Url = API .. "/" .. sent.id .. "/files?filename=chat.txt",
Method = "POST",
Headers = { ["Authorization"] = "Bearer " .. KEY, ["Content-Type"] = "text/plain" },
Body = table.concat(chat, "\n"),
})
end| Field | What it is |
|---|---|
| reporter, target | The players: their Roblox user id, and their name if you like. A player cannot report themselves. |
| reason | What the player wrote, 3 to 2000 characters. |
| category | Optional. A word from your own menu, such as Exploiting. |
| universeId, jobId | Optional. Which game and which server it happened in. |
| data | Optional. Anything else, up to 16 KB: a chat log, positions, the round. Staff see it as it came. |
| Files | Pictures (PNG, JPEG, GIF, WebP), plain text or JSON, sent to the report one by one. Only the key that sent the report can add to it. |
A player can send ten reports an hour to a server. While reports are switched off, the API refuses them. The full description is in the API reference.
What is kept, and for how long
- Open reports stay until somebody closes them. Closed reports and their files are deleted a year after they were closed.
- Evidence counts on your server’s storage, under Report files in Settings → Usage.
- Anybody can download the reports they sent with their own data. If they delete their account, their reports stay with your staff, without their name.
Still stuck? Get help from the Technified team.