Skip to content

Docs

Troubleshooting

Start with the Dashboard Overview and Setup pages: they say what is wrong in plain words. Owners also get a DM and a log channel post when Metro stops reading their server.

The Server-Key status

The Setup page shows the key's status:

StatusValueMeaningFix
ConnectedvalidPRC accepts the keyNothing
Rejected by PRCinvalidPRC says the key is wrong or expired, or PRC kept refusing MetroMake a new key in ER:LC and paste it on Setup or run /setup
Banned by PRCbannedPRC banned this Server-KeyMake a new key in ER:LC and store it
Not set upnoneNo key storedRun /setup

A rejected or banned key is never tried again until a new key is stored. Storing a new key that PRC accepts sets the status back to Connected and Metro starts reading again. While the key is rejected, jobs, dispatch and cameras are all paused.

How often Metro reads a server (poll state)

StateMeaning
offlineNobody is in the server. Metro checks every 60 seconds for players. Normal
idlePlayers are online. Metro reads every 15 seconds
activeA job, run or 911 call is live, or cameras are on. Metro reads every 5 seconds
burstA short faster stretch, at most 30 seconds
degradedPRC is struggling, so Metro widened the interval. It narrows again by itself. The dashboard says "Poll interval widened"
brokenMetro has stopped reading this server

With a Connected key, broken shows as "Metro is not reading your server" on the Setup page. With a rejected or banned key, Setup instead shows "Polling has stopped: jobs, dispatch and cameras do nothing until a working Server-Key replaces this one."

The circuit and its reason

The circuit is Metro's safety switch for reading a server.

CircuitMeaning
closedNormal
openMetro stopped reading the server, for the reason below
halfMetro is testing whether the server can be read again
ReasonWhat happenedFix
key_invalidPRC said the Server-Key is wrong or expiredNew key in ER:LC, then /setup or Setup page
key_bannedPRC banned the Server-KeyNew key in ER:LC, then store it
consecutive_403PRC refused Metro three times in a row, so Metro stopped before PRC blocks itNew key in ER:LC, then store it
bot_removedMetro was removed from the Discord serverAdd Metro back and run /setup

PRC error codes (last error code)

CodeMeaningWhat to do
0Unknown errorWait; if it repeats, open a ticket
1001PRC could not reach RobloxTemporary. Metro backs off and retries by itself
1002PRC internal errorTemporary. Metro backs off and retries by itself
2000No Server-Key sentStore a key with /setup
2001The Server-Key is malformedCopy the key again from ER:LC
2002The Server-Key is invalid or expiredMake a new key and store it
2003PRC rejected Metro's own accessNot the owner's fault: a person on the Metro team must look
2004The Server-Key is bannedMake a new key and store it
3001A command was missingUsually harmless
3002The server is offline (no players)Normal. Metro waits for players
4000Not authorized for this serverCheck the key belongs to this server; approve Metro with the authorize link
4001Rate limited by PRCTemporary. Metro slows down by itself
4002That in-game command is restrictedThe server's settings block it
4003That in-game message is prohibitedPRC refused the text
9998The resource is restrictedThe server may lack the API pack or permission
9999The server's API module is out of dateRestart the private server

For 1001, 1002, server errors and unreadable replies, Metro waits 5, 10, 20, 40 and then 60 seconds between tries. Code 3002 never stops reading.

"Your server needs a restart"

PRC says the API module on the private server is out of date (code 9999), so Metro cannot read it. Shut the private server down and start it again so ER:LC updates it. Metro picks up again by itself. The owner gets this as a DM and a log channel post, and the dashboard shows "Server needs a restart".

"Metro stopped reading your server"

The owner DM and log channel alert for a rejected key: PRC says the Server-Key is wrong or expired, so jobs, dispatch and cameras are paused. Make a new key in ER:LC under Settings, then API, and run /setup with it or paste it on the Setup page. Variants: "PRC banned your Server-Key", and "PRC kept refusing Metro's requests, so Metro stopped before PRC blocks it". All three need a new key.

"Metro is not reading your server" (stalled)

The Setup page shows this, with "Last read ... ago", when the last read is older than five poll intervals and at least 2 minutes old, or when reading has stopped (broken) while the key is still Connected. Jobs, dispatch and cameras are paused until it reads again. Metro keeps trying by itself. Check https://metrobot.app/status for a wider problem. If PRC refuses the key, Metro says so separately, on Setup and in Discord.

Players see "Metro isn't reading this server right now, tell a manager."

Jobs refuse to start when the key is rejected or banned, when Metro has never read the server, when the last read is older than 2 minutes, or when the server needs a restart. Fix the cause above; players do nothing.

"Metro is not connected yet"

No key is stored. Run /setup or use the Setup page.

Webhook problems

  • `;link` does nothing: the webhook URL from /setup or the Setup page is not pasted in the ER:LC private server settings, or it was regenerated and ER:LC still has the old one. Paste the current URL.
  • The checklist still says no `;` command arrived: after pasting the URL, type ;link in game once. The Setup page then shows "In-game commands working" with the time.
  • Regenerated the URL: the old URL stops working at once. Paste the new one in ER:LC.
  • In game, "Usage: ;link CODE": the code was missing. Type ;link then a space and the code. ;verify CODE does the same.
  • In game, "That code is wrong or expired": codes last 10 minutes and work once. Run /verify or open https://metrobot.app/verify for a new one.
  • In game, "Too many tries": a player can try 5 codes every 10 minutes. Wait the time shown, then type the code again.
  • In game, "That Discord account is already verified. Nothing was changed.": this Discord account is already linked. /verify shows which Roblox account.
  • In game, "This Roblox account is already linked to a different Discord account.": unlink it from the other Discord account first.
  • In game, "You linked a different Roblox account recently": the 30-day wait before switching to a different account is running; the reply gives the date. Relinking the same account always works.
  • No reply in game at all: in-game replies need in-game sending on for the server and the owner's approval in ER:LC. The link may still have worked; check Discord DMs or /verify.

Missing bot permissions

  • "Metro can't post in a channel" on the Overview means Metro could not see or post in a channel it uses. "Metro can't see channel": give the Metro role View Channel there, or pick another channel. "Metro can see channel but can't send there": give it Send Messages and Embed Links.
  • Roles not given (ranks, offices, crews, form accept roles): Metro needs Manage Roles, and Discord lets a bot manage only roles below its own highest role. Move the Metro role above those roles.
  • No welcome post or no DMs: Metro cannot post in the system channel, or the member's DMs are closed.
  • Threads not created (appeals, workflow tickets): Metro needs Create Public Threads in that channel.
  • Nicknames not set by a workflow: Metro needs Manage Nicknames, and cannot change the server owner.

Roblox verification problems

  • The code expired: codes last 10 minutes. Run /verify again.
  • "Too many codes": at most 3 codes per hour. Wait for the time shown.
  • "That Roblox account is already linked to a different Discord account." One Roblox account links to one Discord account. Unlink from the other Discord account first.
  • "This Discord account switched Roblox accounts recently": after unlinking or switching, you must wait 30 days to link a different Roblox account. Linking the same account again always works. Server owners cannot skip the wait; Metro support can reset it.
  • Linking at any age: the only way to link is the in-game code, ;link CODE, which works for every Roblox account. There is no Roblox sign-in.
  • Linked the wrong account: /verify unlink:True, then wait 30 days before linking another.
  • Money "missing" after switching accounts: money and items stay with the Roblox account on each server, not with the Discord account.

Jobs that do not pay

Check, in order:

  1. The player is verified (/verify shows the linked account).
  2. The player is in the ER:LC server, on the Civilian team, and driving a vehicle. Switching away from Civilian ends the job.
  3. DMs from server members are on. With DMs closed the job is cancelled with no penalty.
  4. Metro is reading the server (the Setup page shows no errors).
  5. The daily cap (20,000 by default) is not reached. /job start then says when it resets.
  6. The stop was not driven impossibly fast ("Not paid: too fast"). Arriving much faster than a normal drive holds the payment ("Paying in" seconds), then pays.

Me > Jobs on the website shows the reason a job did not pay.

Other messages players see

  • "You need the <area> permission. Ask the server owner to give your role access on metrobot.app." The member's roles lack an Access permission. The owner adds it on Dashboard > Roles & access.
  • "Slow down, try again in a few seconds." More than 5 commands in 10 seconds.
  • "Link your Roblox account first": the command needs a linked account. Press Verify.
  • "Something went wrong. Try again, or tell a manager." with a Ref: an unexpected error. The Ref lets a person on the Metro team find it; include it in a ticket.
  • A Plus card: the feature needs Plus; only the server owner can upgrade.

Reading the details attached to a ticket

Tickets carry a snapshot taken when they open: the server and its plan (free or plus), where the ticket came from (a page path or the command), the Discord account, the linked Roblox account if any, the server's poll details (state, lastErrorCode, circuit, circuitReason, lastPollAt), and up to 10 recent errors, each with where it happened and a reference. Read poll details with the tables above. A recent lastPollAt with state idle or active and circuit closed means Metro is reading fine, and the problem is elsewhere.

Next: What needs a person on the Metro team