AI Assistant
The AI Assistant summarises tickets for staff, takes a first pass at a member's problem before staff arrive, routes new tickets to the right category, lets a keyword answer in its own words, answers members' questions on demand with /ai ask, and gives your staff four tools: a guide to FiveUnity itself, reply drafts, channel catch-ups and a writer for announcements. It runs on your own free Google Gemini key.
Where: Dashboard โ Support desk โ AI Assistant ยท In Discord: /ai panel (also /setup โ AI Assistant)
The AI Assistant is part of FiveUnity that needs the Pro plan; the dashboard Log Builder is also Pro-only. Everything else is included in both Premium and Pro. See Plans and billing.
On a plan without it, both surfaces say so rather than pretending: the dashboard shows an upgrade banner, and /setup โ AI Assistant names your current plan and refuses to switch a feature on. Switching one off always works, so a server that drops back to Premium can still tidy up its settings.
#Built for FiveUnity
Out of the box, every AI feature knows what it is part of. Member-facing answers (the first responder, /ai ask and AI key phrases) introduce themselves as FiveUnity's assistant, understand a FiveM roleplay community's vocabulary, never make a staff decision such as a ban, refund or whitelist approval, and send anything that needs a human to a ticket. The first responder is told which kind of ticket the member opened and asks for the details staff usually need. The staff tools know the /ticket workflow, ticket routing knows how FiveM support usually splits, and summaries keep in-game names, ids, amounts and evidence exactly as written. The assistant also reads your FiveUnity setup (see Use this server's FiveUnity setup below), so it can point members at the right ticket panel.
None of this replaces your own settings: Server information, Personalization and the guidance for each tool still come first.
#Set it up
- Pick a free provider (or a recommended mode):
- Accurate (recommended for summaries, routing and drafts): Google Gemini. Free AI Studio key, no billing account.
- Fast (recommended for first replies and
/ai askunder load): Groq. OpenAI-compatible, very low latency. - Optional: OpenRouter for a free-model router (
openrouter/free) when you want one key that can reach several free models.
- Paste the key into the providerโs API key field, pick a Model, and press Test connection. A successful test reports the model and how long it took.
- Save, then fill in What the AI knows; without it the model has nothing to answer from.
- Under Data-use consent, press Review and accept. Ticket summaries, the first responder, escalation, reply drafts and catch-ups stay locked until you do.
- Switch on the features you want.
Your key is stored encrypted and never shown again. Type a new one to replace it, or press Remove keys: every AI feature stops working immediately.
Every step above can also be done from Discord with /ai panel, described below.
#Providers
| Provider | Best for | Key |
|---|---|---|
| Google Gemini | Accurate mode: ticket summaries, routing, staff drafts | aistudio.google.com/apikey |
| Groq | Fast mode: first responder, /ai ask, high traffic | console.groq.com/keys |
| OpenRouter | Free-model router and rotating :free models | openrouter.ai/keys |
Dashboard Fast / Accurate buttons set provider and model together. Switching provider clears model detection and may need a new key for that vendor.
#The /ai panel control panel
/ai panel (or /setup โ AI Assistant) opens everything about the assistant in one private message: connection, consent, features, knowledge and usage, with these controls.
| Control | What it does |
|---|---|
| Enable / Disable | The master switch. |
| Set key | Saves a new primary Gemini key. |
| Add backup key | Adds one key to the pool. Backups are tried in turn when a key hits Google's quota. |
| Test | Sends a one-line request with the stored key and reports the model and how long it took. |
| Detect models | Asks Google which of the supported models the key can reach, and marks each entry of the Model menu as available or not on this key. The same check is /ai models. |
| Model menu | Picks the model. Each entry shows its free-tier allowance. |
| Features menu | Every switch at once: tick what should be on. Ticket features cannot be switched on before consent; the reply-draft and catch-up tools can be ticked but say they are waiting for it. |
| Persona, Knowledge | The same text boxes as the dashboard, as forms. |
| Limits | Requests per minute and per day, the member cooldown, and reply length. |
| Consent | Shows the full data-use notice and records your acceptance, exactly as the dashboard does. |
| Refresh knowledge | Rebuilds the knowledge block now and reports how many characters came from which sources. |
| Usage | Today's requests against the limit, the per-minute cap, any quota backoff and the last error. |
| Remove keys | Removes the primary key and every backup, after a confirmation. |
/ai status is the read-only version for staff: whether the assistant is ready, the model, consent, today's usage and which features are on. /ai panel needs the setup permission; the rest of /ai needs ai.
#Google Gemini
| Setting | What it does |
|---|---|
| AI assistant enabled | Master switch for every AI feature. |
| Backup Gemini API keys | Up to 19 extra keys, one per line. When a key receives Google's 429 quota response, the next configured key is used automatically. |
| Model | Which Gemini Flash model to use, newest first (Gemini 3.8 Flash is the newest this release ships with). New Flash releases are picked up without a FiveUnity update: once a day the bot asks Google which models your key can reach, and anything newer appears in both model lists marked new. If the model you picked stops being reachable, every AI feature answers with the default model instead of failing, and the bot log says so. The dashboard shows each model's free-tier allowance (an estimate for a brand-new one). A server that never picked one runs FiveUnity's current default (Gemini 3.5 Flash-Lite), and that is what both panels show. Detect models (or /ai models) asks Google which of them your key can actually reach; a model the key cannot reach is the usual cause of "that model is not available for this key". |
| Show an AI disclaimer | Adds a footer marking a reply as AI-generated. On by default, and strongly recommended. |
| Redact personal data | Strips email addresses, IP addresses, access tokens and long runs of digits before anything is sent to Google. On by default. |
Only Flash models are offered; they are the ones on Google's free tier. If a request fails, the last error is shown at the top of the panel, so you can tell a bad key from a quota block.
FiveUnity remembers which key in the pool last worked, including across bot restarts. A backup is tried only when Google reports a rate/quota limit; other errors are returned normally so a bad request cannot silently consume every key.
#Data-use consent
Any feature that sends member-written content to Google (ticket summaries, the first responder, automatic escalation, reply drafts, channel catch-ups, AI key phrases and AI log answers) is locked until an admin accepts the data-use terms, both in the dashboard and on the bot side. Accept on the dashboard, or in Discord with /ai panel โ Consent, which shows the same notice. It says:
Content you send to Gemini on Google's free tier is used by Google to improve their products. Ticket transcripts routinely contain member names, ban appeals, and payment references. Only accept if you are comfortable with that, and tell your members in your own rules.
Accepting records who accepted and when, and the panel shows both afterwards. Nothing else about the decision is stored. See Privacy and your data.
#What the AI knows
The assistant answers only from what you give it. There are several sources and you can combine them.
| Setting | What it does |
|---|---|
| Server information | The concise facts the AI reads: rules, FAQs, connection steps, store details. Up to 4,000 characters. |
| Document URL | Paste a public http/https page, then Fetch URL. Private, local and blocked addresses are refused. |
| Attach a document | Upload .txt, .md, .html, .json or .csv (not PDF). The browser reads the file as text; nothing is stored until you compound and save. |
| Raw information to compound | Paste up to 30,000 characters, or keep the text fetched from a file/URL. Press Compound into knowledge (or Simplify with AI when Server information is still empty) to merge it into concise server information. The model deduplicates against what you already have. The raw text is not kept after compounding. |
| Sources | A short list of files, URLs and pastes that fed Server information (title, kind, when fetched). Re-fetch a URL to load fresh text; remove entries you no longer want listed. Save the page to keep the list. Full raw bodies are not stored. |
| Use keyword answers | Feeds your existing keyword responses to the model as known facts. Keywords set to AI mode are skipped, since they have no fixed answer to teach from. |
| Use this server's FiveUnity setup | On by default. Tells the assistant which published ticket panels and ticket types, open application forms, department role requests, store link and /ai ask channels members can use, so it points people to the right place without you retyping it. Only panels and channels every member can see are included. Changes are picked up within 15 minutes, or straight away with Refresh knowledge. |
| Rules / FAQ channels | Up to five channels. The bot reads their recent messages, including embeds. |
Refresh knowledge rebuilds the block now and reports how many characters came from which sources. Otherwise it is rebuilt every 15 minutes, and whenever you save this page.
Write the server information as short factual lines, not prose. Whitelist: apply in #applications, 24h wait is used correctly far more often than a paragraph saying the same thing. Prefer Compound into knowledge when adding a new doc so the box stays short and the ticket AI can still fit everything in one pass.
#Ticket summaries
Condenses a ticket into Summary, Outcome and Action items that staff can read in seconds.
| Setting | What it does |
|---|---|
| Ticket summaries enabled | Turns summaries on. Requires data-use consent. |
| Summarise automatically on close | Posts a summary whenever a ticket closes. One request per ticket. |
| Summary log channel | Where that summary goes. Empty uses your existing ticket log channel. |
| Messages to read per ticket | 10-400, default 150. Longer tickets are trimmed from the middle, keeping the opening problem and the closing outcome. |
| Preset staff questions | Up to 10 reusable questions for /ticket summary question:. Staff can choose one or type their own. |
Staff can also summarise on demand with /ticket summary inside an open ticket; the answer comes back privately. They can add question: to get a direct answer alongside the normal summary. It is granted through its own permission node, so you can give it to seniors without the rest of the ticket commands. See Permissions.
Summaries are for staff only. They go to a staff channel and are never DMed to the member.
A ticket transcript is treated as data, never as instructions. If a member types "ignore your instructions" into a ticket, the summary reports that they did rather than obeying it.
#Ticket first responder
Answers the member's first real message in a new ticket, once per ticket, before staff arrive.
| Setting | What it does |
|---|---|
| Ticket first responder enabled | Turns the responder on. Requires data-use consent. |
| Only before a ticket is claimed | On by default. The AI stays quiet once a staff member has claimed the ticket. |
| First-responder guidance | Extra instructions for this responder only, up to 2,000 characters. |
| Response examples | Up to 10 labelled member-message / good-answer pairs that show the style and level of detail you want. |
It only replies to the member who opened the ticket, never to staff or anyone added later, and it ignores very short messages so a bare "hi" does not spend your quota. The reply is an embed footed AI first response ยท staff will follow up. If it cannot be produced (quota, an outage, a missing key) the ticket carries on silently and it can try again on the next message.
The assistant is instructed never to claim to be a human or a staff member, never to invent rules or prices, and to say plainly when your server information does not cover the question. It cannot ping @everyone, @here or any role.
#Automatic ticket escalation
Reads the opener's first detailed message in a brand-new ticket, compares it with your knowledge base and category descriptions, then moves the ticket if the match is confident enough. It only ever acts on new tickets: once the routing window has passed or a staff member has posted, the ticket stays where it is.
When it routes
| Setting | What it does |
|---|---|
| Automatic ticket escalation enabled | Turns routing on. Requires data-use consent. |
| Routing window | 0-1440 minutes, default 10. The AI only routes a ticket this soon after it opens. After that it leaves the ticket alone, however the conversation goes. 0 is instant: no time limit, so the AI routes the opener's first detailed message whenever it lands, and the staff-reply and claim switches do the protecting. |
| Stop once staff reply | On by default. The first message from a staff member ends automatic routing for that ticket, claimed or not. "Staff" is the same as for auto-claim: a staff permission group, the ticket.claim permission, or one of the ticket's support roles. |
| Only before a ticket is claimed | On by default. Staff keep final control after claiming and can still run /ticket escalate or /ai escalate. |
| Route tickets opened as | Empty means every ticket type. Pick a catch-all type (for example general support) so tickets members opened in the right place are never moved. |
Where it moves tickets
| Setting | What it does |
|---|---|
| Minimum confidence | 50-99%, default 80%. Higher moves fewer tickets. |
| Allowed destinations | Empty means every destination except the ticket's current category. |
| Post a notice in the ticket | On by default. Posts the Ticket Escalated card after an automatic move so the member and staff can see where it went and why. |
| Ping destination roles | On by default. Pings the new category's support roles after an automatic move. Ping support roles on escalation on the Tickets page has to be on as well. |
| Routing guidance | Short rules such as "payment questions go to Billing". Up to 2,000 characters. Simplify with Gemini rewrites a longer draft into concise topic โ category rules without saving; review and save yourself. |
| Auto-rename | Addon. Renames the channel to a short label of what the ticket is about (for example pr-rdm), on automatic routing and on /ai escalate. Separate from the Tickets page Rename on escalation scheme. |
| Naming examples | Up to 25 situation โ channel-name pairs that teach abbreviations and house style (for example player reports as pr-โฆ instead of spelling the full type out). Paste rough notes and press Simplify with Gemini to turn them into concise examples without saving; review and save yourself. |
Routing reads the opener's messages in the ticket (not only the latest one), uses the same daily quota as other AI features, and records the move like a normal escalation. With Auto-rename on, the model's short label is preferred over the type naming scheme. Rename is part of the same Gemini request as routing, not a second one. When the first responder is also on, both features share one request on that opener message (route, optional rename, and the first reply together), which keeps a free-tier key (~10 requests per minute per Google Cloud project) from being spent twice. A confident move, a clear "keep it here", or a below-threshold confidence counts as the one decision for that ticket; a stay-put decision can still auto-rename. If the model is unavailable, over budget, or returns unusable output, the ticket stays where it is and the next detailed opener message can try again, but only while the ticket is still inside the routing window and no staff member has posted. The bot also checks again just before moving: if staff replied, claimed or moved the ticket while the model was working, it leaves the ticket alone.
Staff can always route manually with /ticket escalate, or force a classify-and-move pass with /ai escalate. /ai escalate ignores the routing window, the staff-reply and claim switches, and Route tickets opened as, and it always posts the move and follows the Tickets page ping setting, like /ticket escalate. Deterministic automations are available separately under each ticket panel's Automations editor.
#AI key phrases
Lets a keyword trigger a generated answer instead of a fixed one.
Switch AI key phrases enabled on here, then set an individual keyword's mode to AI on Modules and utilities. An exact keyword match with a written answer always beats an AI keyword, so your fixed replies keep working and cost nothing. If AI is off, over budget or failing, an AI keyword falls back to its written response rather than going silent.
The member's message is what gets sent to Google, so this needs the data-use consent as well: until it is accepted, an AI keyword answers with its written response and both panels say it is waiting.
#Ask the assistant (/ai ask)
Members can ask the assistant a question on demand and get a private answer from the server information: "how do I get whitelisted", "what are the rules on RDM". It follows the same rules as the first responder, never claims to be staff, and points at a human for anything the knowledge does not cover.
| Setting | What it does |
|---|---|
| /ai ask enabled | Off by default, because any member can spend the quota on it. |
| Only in these channels | Leave empty and it works everywhere; otherwise /ai ask answers only in the channels listed. |
The per-member cooldown and daily share under Usage limits apply to it, and you can restrict or disable the command per channel on the Slash commands page as well.
#Staff AI tools
Five /ai subcommands for staff. Each is one request, each answers privately (except /ai escalate, which posts the move in the ticket), and all of them are granted through the ai permission node (or a single subcommand such as ai.draft). They are on by default once the assistant is on, except escalation which follows the Automatic ticket escalation switch.
| Tool | What it does | Needs consent |
|---|---|---|
/ai guide | Answers "how do Iโฆ" questions about FiveUnity itself, from the FiveUnity manual, with links to the pages it used. | No |
/ai draft | Drafts the next staff reply in a ticket, in your persona and from your server information, with a copy-ready version. Drafting guidance adds instructions for drafts only. | Yes |
/ai catchup | Summarises what happened in the current channel: what was discussed, decisions, open questions. Messages a catch-up reads sets the default (20 to 300). | Yes |
/ai write | Writes an announcement, a rules section, a welcome message, embed text or a reply from a brief and an optional tone, with a copy-ready version. | No |
/ai escalate | Reads the open ticket, classifies it, moves it when confident enough, and applies Auto-rename when that addon is on. Bypasses the once-per-ticket automatic slot and the new-tickets-only switches so staff can force a pass after claiming. | Yes |
Full option tables are on AI commands.
#Usage limits
These keep a server inside Google's free tier. Lower is safer.
| Setting | What it does |
|---|---|
| Requests per minute | 1-15, default 8. Keep it under your model's free-tier allowance (~10 per Google Cloud project). Extra backup keys from separate projects multiply this budget automatically. |
| Requests per day | 1-1000, default 200. The panel shows today's usage. Resets at midnight UTC. |
| Per-member cooldown (seconds) | 0-3600, default 30. Stops one member burning the daily budget. Staff summaries, staff tools, log searches and the two automatic once-per-ticket calls (routing and the first response) ignore it, so turning routing on no longer delays the first responder. |
| Max reply length (tokens) | 64-2048, default 400. Roughly 400 tokens is a short paragraph. |
There is also a short per-channel cooldown, and if Google reports that you are out of quota the assistant rests and resumes automatically; the dashboard and /ai panel both show when it is resting and when it resumes, and a backup key is tried straight away.
#Personalization
Presets that apply to every AI reply on this server. In Discord they live under /ai panel โ Personalize.
| Setting | What it does |
|---|---|
| Tone | Friendly (default), professional, strict or casual. The default voice when no custom persona is set. |
| Reply length | Concise (default), balanced or detailed. How long member-facing answers run. |
| Language | The language the assistant writes in. Default English. |
| Community nickname | Optional. How the assistant refers to your community instead of the Discord server name. |
| Sign-off | Optional. Appended to member-facing replies. |
| Custom persona | Optional, up to 1,000 characters, and it shapes tone only: facts belong in Server information. Empty uses FiveUnity's default support voice (friendly, calm and direct, two or three short sentences, and says so plainly instead of guessing), and the presets above still win over it. A persona you write replaces the default and overrides the tone preset when they conflict. Press Use example persona to drop a worked example for a roleplay server into the box, then reword it to match how your staff speak. |
Guidance for one tool at a time lives with that tool: First-responder guidance and Response examples under What the AI knows, Drafting guidance under Staff AI tools, Routing guidance and Naming examples under Automatic ticket escalation, and the log-answer guidance and default answer shape on the Log Lookup page.
Keep the persona to length and manner: "two or three short sentences", "skip greetings and apologies", "never promise a staff response time". Anything factual you put here is treated as tone and can be ignored.
#AI-assisted setup
The last section of the page lists every module that can be configured from a plain-English description, with a link to its Set up with AI entry point and the state of the last plan you made there. Each flow uses this page's Gemini key and counts against the same daily budget: the assistant drafts a plan, FiveUnity checks every name against your server and asks when one could mean several things, you review the preview and the full list of changes, and nothing is built until you approve it.
| Module | Where | Who may use it |
|---|---|---|
| Ticket system | Support desk โ Tickets | Anyone with dashboard access who may manage the server |
| Police roster | Roleplay | Anyone with dashboard access who may manage the server |
| Channel layout | Server setup โ Channel setup | Roles granted channel-setup (Head Admin by default; owner and Discord Administrator always) |
Both flows offer section backups on the page: save ticket config or the channel layout before you apply, then restore if the result is wrong. Channel setup is create-only: it will not edit, move, delete or reorder channels that already exist, create roles, or change role permissions. Applying a channel plan also requires typing CREATE CHANNELS.
#Fixing an existing ticket setup
The ticket assistant is built for repair work as much as for new builds. It reads your current panels (including whether each panel's Discord message is still alive and has working buttons), so you can paste a symptom ("the dropdown does nothing", "staff cannot see app tickets") and it answers with a diagnosis and the smallest plan that fixes it, not a rebuild.
How edits behave, and how they stay safe:
- Edits keep what they do not touch. A plan that updates a panel leaves its unmentioned types, embed text, roles and channel alone. New types are added next to the existing ones; a type is only ever removed when you asked for a replacement list, and then the review screen warns about every type that would go.
- Nothing disappears silently. The review screen shows a field-level list of what changes on each existing panel, and a plan that deletes panels or categories you never asked to delete is refused outright.
- Name drift cannot duplicate a panel. If the plan's name is a near miss of an existing one, you get a warning instead of a second panel, and "rename X to Y" updates X in place rather than creating Y next to it.
- Your choices are remembered. Hand edits on the plan, answers to the assistant's questions, and any warnings from the previous version are all fed back to the model on the next request, so it stops repeating mistakes.
- Text answers work. When the assistant asks an advice question, you answer in words in the "Your pick" panel and it folds the answer into the next plan version.
#Related
- AI commands: every
/aisubcommand and/ai ask, with their options. - Staff logs: the staff log finder, which uses the same assistant for its written answers.
- Tickets: the ticket lifecycle the summaries and first responder plug into.
- Plans and billing: upgrading to Pro.
- Privacy and your data: what leaves your server and what does not.