# Metro help guide This guide answers the questions server owners, staff and players ask Metro support most. It covers what Metro does today, how to set it up, every slash command, the website, the Plus plan, troubleshooting, what needs a person on the Metro team, and privacy. Each section stands on its own. Still stuck after reading it? Open a ticket with `/help contact subject: message:` in Discord, or the Help button (the question mark) at the top of any page on metrobot.app. ## 1. What Metro is ### Metro in one paragraph Metro is a Discord bot and website that adds a player economy to private servers of ER:LC (Emergency Response: Liberty County), a Roblox game. It reads each connected server through the official PRC Private Server API every few seconds and pays players for what they do in game: driving jobs, being on duty on an emergency team, answering 911 calls, racing and finishing challenges. Players spend that money on cars, driving licences, perks, rent, businesses and crews. Staff get police tools, traffic cameras, 911 dispatch, a CAD and records of how staff work. Owners can run a government with elections, laws and taxes on Plus. Everything is visible and adjustable on the dashboard at https://metrobot.app. ### The three parts - **Discord bot:** slash commands, direct messages (DMs) to players, posts in channels the owner picks, and Discord role changes. - **Game reader:** reads each connected ER:LC server through the PRC API: who is online, where they are, their team, vehicle, wanted stars, kills, staff commands, mod calls and 911 calls. It pays wages, checks job arrivals and runs everything that happens on its own. - **Website:** the public site, the owner and staff dashboard, and the player pages, at https://metrobot.app. ### Facts people ask about - Money and progress belong to one server. A balance on one server has nothing to do with a balance on another, and money never moves between servers. - The link between a Discord account and a Roblox account is shared. A player verifies once and it works on every server that runs Metro. - Metro runs beside a server's existing staff bots. It does not replace moderation bots. - Metro never asks for a Roblox password. Linking uses Roblox's own sign-in or a short code typed in game. - Metro uses only the official ER:LC API. It does not run anything inside the game. - New players start with a balance of 0. - Metro never kicks, bans or respawns anyone on its own. Staff with the right permission can send a kick or ban through Metro with `/mod`. - Metro is not affiliated with, endorsed by or sponsored by Police Roleplay Community, Roblox or Discord. - Metro is free. Plus is an optional plan at USD 4.99 per month per server. ### How Metro reaches players - **Slash command replies:** most are private (only you see them). `/profile`, `/event list` and `/event leaderboard` are public. - **DMs:** job and crime steps with a small map, verification results, fines, achievements, challenges and reminders. A job will not start while your DMs from server members are off. - **Log channel:** payouts, purchases, fines, rent, loans, staff events and owner alerts. The owner picks it in `/setup`. - **Other channels:** election news, the season board, the 911 panel, camera alerts, staff alerts, game logs and server status each go where the owner points them with `/channels`. - **In game:** short private messages and hints through the ER:LC API, once in-game sending is switched on for the server. When it is off, Metro reaches players in Discord only. Every name that comes from the game is cleaned before Metro posts it, so it cannot ping anyone or break formatting. ## 2. Setting Metro up Setup takes about five minutes. The owner, or a member with the Discord permission Manage Server, does it once per Discord server. ### Step 1: Add Metro to Discord Add the bot with the "Add to Discord" button on https://metrobot.app. Metro asks for these Discord permissions: view channels, send messages, embed links, attach files, create public threads, manage nicknames and manage roles. It never asks for Administrator. When Metro joins, it posts a welcome with three steps and a dashboard link in the server's system channel. If it cannot post there, it DMs whoever added it, then the server owner. What failure looks like: no welcome message usually means Metro cannot see or post in the system channel. Nothing is broken; carry on with `/setup`. ### Step 2: Run /setup `/setup key: log_channel:<#channel> [template:]` - `key` is the ER:LC Server-Key. In ER:LC, open your private server settings, then the API section, and create a key if you have none. - `log_channel` is a text channel, usually a staff channel, where Metro logs payouts, purchases, fines and staff events. - `template` is the economy to start from: Light, Standard, Full RP, Civilian City or Strict RP. Standard is the default. What happens: 1. Metro checks the key with PRC before anything is saved. 2. Metro stores the key encrypted and never shows it again, not even partly. 3. Metro posts a "Metro is connected" test card in the log channel. 4. Metro applies the template, but only on a server that has never been set up or when you pick a template on purpose. A server with settings keeps them. 5. The reply lists the next steps: the webhook URL, a test job, the ER:LC authorize link and telling players. The Dashboard Setup page (`/g//manage/setup`) does the same in the browser. What failure looks like: - "Only the server owner or a manager can run /setup." You need Manage Server. - "PRC says that Server-Key is wrong or expired." Make a new key in ER:LC under Settings, then API, and run `/setup` again with it. - "PRC is having trouble right now. Try again in a minute." PRC is down or busy. Wait and retry. - "Metro can't see #channel." Give the Metro role View Channel in the log channel, or pick another channel. - "Metro can see #channel but can't post there." Give the Metro role Send Messages and Embed Links. When the test card cannot be posted, nothing is saved. ### Step 3: Turn on in-game commands (webhook) The `/setup` reply contains a webhook URL. Paste it into your ER:LC private server settings as the webhook URL. This lets players type `;verify CODE` in game chat to link their account, and lets officers use `;cad` commands. The Setup page shows the URL again and can make a new one; the old one then stops working. What failure looks like: the Setup page and the go-live checklist say "No in-game command has reached Metro yet" until a `;` command arrives. Once one does, they show "In-game commands working" with the time it was last received. ### Step 4: Authorize Metro in ER:LC PRC asks the server owner to approve Metro once, so Metro can send in-game messages and commands. Only the Roblox account that owns the private server can approve it; co-owners and staff cannot. 1. Sign in at https://api.erlc.gg/server-owners with the Roblox account that owns the private server. 2. Open the authorize link from the `/setup` reply or the Setup page, and approve. What failure looks like: if PRC shows a server list or "No servers found" instead of the approve screen, you are signed in with the wrong Roblox account, or the server does not have the API pack. Without this approval Metro still reads the server and pays players, but cannot send in-game messages or commands. ### Step 5: Get paid once yourself Run `/verify` to link your Roblox account, join your server in game on the Civilian team, get in a vehicle, run `/job start` in Discord and drive to the address Metro DMs you. The money arrives when you get there. ### Step 6: Tell your players - `/help commands` lists every command. - `/channels set` picks where Metro posts the season board, election news, the 911 panel, new 911 calls and alerts. - Players start with `/verify`, then `/wallet` and `/job start`. ### The go-live checklist The Dashboard Overview shows a checklist until the first player is paid. Each step and what it says when stuck: | Step | Done when | When it is stuck | |---|---|---| | Server-Key stored | A key PRC accepted is saved | PRC refuses the stored key: paste a working one on Setup | | Template chosen | A starting economy is applied | Pick one on Setup or Templates | | First poll received | Metro has read the server once | Usually within a minute. Stuck states: the key was refused, the server needs a restart, or reading stalled ("It keeps trying by itself") | | In-game commands working | A `;` command reached Metro | "No ; command has reached Metro yet": show the webhook URL on Setup, paste it in ER:LC, then type `;verify` in game | | First player paid | A player was paid for a job | Make sure a verified player on the Civilian team in a vehicle runs `/job start` | ### Setup reminders If your server has no paid jobs a week after install, the owner gets a DM with the checklist. Stop these or Dashboard > Grow > Owner reminders turns it off. Set it up for me opens a support ticket. ### Launch offer While launch spots last, a server that finishes setup gets 30 days of Plus free, with no card and nothing to cancel. The first 25 servers count. Each server gets it once; running setup again or re-adding Metro does not give a second month. metrobot.app shows how many spots are left and stops mentioning the offer when they are gone. ### Vote trial A server that never had Plus can get 7 days free, once: the owner runs `/plus trial` and votes for Metro on top.gg with the button it shows. Plus starts within a minute of the vote. No card is taken and nothing is charged unless the owner subscribes. ### Vote perks Grow > Vote perks: set the monthly goal, turn streak bonuses on or off, and optionally paste a role id for the Voter role. The role must sit below Metro's role. It is cosmetic: nothing is locked behind votes. ### Removing Metro When Metro is removed from a Discord server, it stops reading that ER:LC server at once and deletes the stored Server-Key. The rest of the economy is kept. Add Metro back and run `/setup` again with a key, and everything returns. ## 3. Slash commands Options are written `name:value`, the way Discord shows them. Options in square brackets are optional. Most replies are private. ### Account, help and plan - `/verify`: link your Roblox account. Shows a 6-character code and the website link, or your linked account if you already have one. - `/verify unlink:True`: remove your link. You can link a different Roblox account 30 days later. - `/help commands`: list Metro's commands. - `/help contact subject:<3-120 characters> message:`: send a message to Metro support. The reply comes by DM and on metrobot.app. - `/suggest category: [feature:]`: post a feature suggestion to the public board at https://metrobot.app/suggestions. - `/vote [remind:True]`: what a vote for Metro on top.gg pays in this server, with the vote button. `remind:True` DMs you when you can vote again. - `/plus status`: this server's plan, what Plus adds and a button to Billing. - `/plus grant` and `/plus grants`: give Plus by hand and list grants. Metro team only. ### Setup and server admin (Manage Server) - `/setup key: log_channel:<#channel> [template:]`: connect the ER:LC server. - `/channels set purpose: channel:<#channel>`: post one kind of thing in a channel. Purposes: Log, Election news, Season board, 911 dispatch, 911 new calls, Camera alerts, Staff alerts, Game log, Join log, Kill log, Command log, Mod call log, Vehicle log, Server status. - `/channels clear purpose:`: stop posting that kind of thing. - `/channels list`: where each kind goes now. - `/admin adjust user:@member amount: direction: reason:`: add or remove money. The reason is logged and the player is told. - `/admin refund entry_id:`: refund one transaction by its number. This is in-game money only. - `/admin licence grant user:@member class:`: give a licence for free. - `/admin licence suspend user:@member class: days:`: suspend a licence. - `/admin licence revoke user:@member class:`: take a licence away for good. - `/admin learning`: how far Metro has got learning addresses for job stops on this server. - `/advertise [length:] [style:]`: write a recruiting ad for your server, with your referral link. ### Workflows - `/flow list`: workflows you can run. Managers see every workflow and its state. - `/flow run name: [input:]`: run a workflow that starts from a `/flow` command. - `/flow enable name:` and `/flow disable name:`: switch a workflow on or off. Needs the Settings manage permission. - `/flow status [name:]`: how workflows are doing, with recent runs. Needs the Settings manage permission. ### Money and banking - `/wallet`: your balance, today's change and latest payments. - `/wallet user:@member`: someone else's wallet. Needs Manage Server. - `/pay user:@member amount:`: send money to another verified player. A 1% fee goes to the treasury by default. - `/bank balance`: wallet, savings, credit score and active loans. - `/bank deposit amount:`: move money from wallet to savings. - `/bank withdraw amount:`: move money from savings to wallet. - `/bank statement [limit:]`: recent wallet and savings activity. - `/bank loan apply type: [amount:] [vehicle:]`: take a personal loan, or finance a car. - `/bank loan pay loan_id: amount:`: pay extra toward a loan. - `/bank loan list`: every loan you have had on this server. - `/bank bankruptcy file confirm:True`: clear every active loan for a fee. Plus. ### Jobs, duty and 911 - `/job list`: the jobs this server has on, with pay ranges. - `/job start [type:] [passenger:@member]`: start a job, or pick from a menu. Types: courier, bus, garbage, mail, taxi, tow, water taxi, fishing, cargo. - `/job status`: your current stop, distance and pay so far. - `/job stop`: give up the current job. Unpaid stops are lost. - `/taxi accept`: accept a pending taxi pickup as the passenger. - `/duty`: your current on-duty shift and time to the next payout. - `/calls recent [count:<1-25>]`: the latest 911 calls. Needs the Dispatch view permission. - `/calls stats [user:@member]`: response stats. Someone else's needs Dispatch view. - `/911 what: where: [type:] [character:]`: call 911 from Discord. The call goes to the CAD's dispatchers like a Me > 911 call, answered privately with its reference. Needs a linked Roblox account. One open call and a two-minute wait between calls, shared with Me > 911. Owners turn it off in Dashboard > CAD settings. ### Shop, vehicles, ranks and perks - `/shop [item:]`: open the shop privately: cars, licences, perks, server items, properties and businesses. - `/garage`: your cars and licences, with a Sell button per car. - `/licence list`: every licence class, its price and whether you hold it. - `/licence buy`: open the shop on licences. Commercial, performance and business licences need a short test first. - `/perks list`: every perk, its price and whether you hold it. - `/perks buy`: open the shop on perks. - `/rank [user:@member]`: your rank and what you need for the next one. Your own also updates your rank role. ### Profile and rewards - `/profile [user:@member]`: a public profile card to share. - `/achievements`: every achievement with your progress. - `/challenges`: today's and this week's challenges. ### Events and races - `/event list`: scheduled and active events, with ids, times and fees. - `/event leaderboard [event_id:]`: a race's results, or the season table. - `/event calendar`: upcoming calendar events. Plus. - `/race register event_id:`: sign up, paying any entry fee. - `/race start event_id: [vehicle_class:]`: start your run inside the start window. - `/race status`: your checkpoint and progress. - `/race stop`: give up your run. The fee is not refunded. ### Crime and jail - `/crime start [type:]`: start a run, or pick from a list. - `/crime contraband`: start a contraband run. - `/crime smuggle`: start a water smuggling run. You must be in a boat on the water. - `/crime status`: your current run. - `/crime record [user:@member]`: heat, priors and run history. Someone else's needs the Players view permission. - `/crime sites`: every robbery and contraband site. Needs the Staff view permission. - `/crime bounties`: active bounties. Plus. - `/jail status`: your sentence and time left. - `/jail bail`: pay bail and walk out, when the owner has bail on. - `/jail release player: reason:`: release a player early. Needs the Jail release permission. - `/jail list`: everyone in jail. Needs the Jail view permission. ### Police, EMS and cameras - `/lookup person player:`: a player's warrants, fines, priors, licences and vehicles. Needs Lookup person. - `/lookup plate plate:`: who a plate is registered to and, with Camera search, where it was seen. Needs Lookup plate. - `/warrant issue player: reason:`: put a warrant on a player. Needs Warrants issue. - `/warrant clear id: reason:`: close a live warrant. Needs Warrants clear. - `/warrant list`: up to 20 live warrants. - `/fine player: amount: reason:`: fine any player the server has seen. Needs Fines issue. - `/ems report patient: injury: treatment: transported: [notes:]`: file a patient report. Needs the medical permission and a department with the Medical tool. - `/ems history patient:`: a patient's medical history. - `/cameras search [plate:] [roblox_id:] [fingerprint:] [camera:] [zone:]`: search camera sightings. Needs Camera search. - `/cameras hotlist add kind: value: reason:`: add a hotlist entry. Needs Camera hotlist. - `/cameras hotlist remove entry_id:`: remove a hotlist entry. - `/cameras hotlist list`: up to 20 entries with their status. ### Crews - `/crew create name: tag:`: found a crew. Costs 10,000 by default. - `/crew invite user:@member`: invite a verified player. - `/crew accept` and `/crew decline`: answer your pending invite. - `/crew kick user:@member`: remove a member. - `/crew leave`: leave your crew. - `/crew disband confirm:True`: disband the crew. Leader only; the pot is lost. - `/crew deposit amount:` and `/crew withdraw amount:`: move money in or out of the pot. - `/crew info [name:]`: a crew's roster and pot. - `/crew mine`: your own crew. - `/crew leaderboard [metric:]`: the top crews. - `/crew rank set user:@member rank:`: set a member's rank below your own. - `/crew leader transfer user:@member`: hand over leadership. - `/crew territory list`: territory zones and who holds them. Plus. - `/crew war declare crew:`: declare war. Plus. - `/crew war status`: your crew's current war. Plus. ### Government (Plus) - `/gov status`: office holders, taxes, laws in force and the treasury. - `/gov run [statement:] [office:]`: sign up as a candidate. - `/gov candidates [office:]`: the candidates, with a vote menu during voting. - `/gov vote candidate:@member [office:]`: vote. You can change it until voting closes unless the owner turned that off. - `/gov election start [office:] [preset:]`: start an election. Quick is 15 minutes of sign-up and 15 of voting, Evening 2 hours each, Week 3 days and 2 days. Needs Manage Server. - `/gov election end [office:]`: move to voting early, or count. Needs Manage Server. - `/gov election cancel [office:]`: cancel and refund deposits. Needs Manage Server. - `/gov laws key: enabled: [value:]`: turn a law on or off. - `/gov fine user:@member amount: reason:`: fine a member as an office holder. - `/gov appeals`: open fine appeals. - `/gov appeal file fine_id: reason:`: appeal your own fine inside the appeal window. - `/gov appeal resolve fine_id: decision: reason:`: decide an appeal. Voiding refunds the fine. - `/gov recall`: sign a recall petition against the Mayor. - `/gov treasury bounty user:@member amount: [reason:] [interval_hours:] [budget:]`: pay a bounty, once or repeating. - `/gov treasury stipend user:@member amount: [reason:] [interval_hours:]`: a one-off or repeating payment. - `/gov treasury grant user:@member amount: reason:`: a one-off grant. - `/gov propose tax tax: rate:`: propose a tax rate. - `/gov propose law key: enabled: [value:]`: propose a law change. - `/gov propose treasury spend_kind: user:@member amount: [reason:]`: propose a spend. - `/gov propose appointment office: user:@member`: propose an appointment. - `/gov proposals`: the council's proposals with vote counts. - `/gov vote-proposal id: vote:`: vote on a proposal. Council members only. - `/gov appoint office: user:@member`: appoint an office holder. - `/gov assign office: user:@member` and `/gov unassign office: user:@member`: put a player in an office or take them out. Needs Government manage. - `/gov veto-appointment id:`: veto a recent appointment within 24 hours. Owner side. ### Property and businesses (Plus) - `/property list`: zones for rent, with weekly price and free places. - `/property rent`: renting happens in the shop on the website; this links you there. - `/property mine`: your leases and next rent date. - `/property leave lease_id: confirm:True`: end a lease. Nothing is refunded. - `/business list`: businesses for sale. - `/business buy`: buying happens in the shop on the website; this links you there. - `/business mine`: businesses you own. - `/business hire business_id: user:@member wage:`: hire a verified player. - `/business fire business_id: user:@member`: fire an employee. - `/business upgrade business_id:`: buy the next upgrade level. - `/business sell business_id:`: sell for 50% of what you paid. Every employee is let go. ### Staff tools - `/staff scoreboard [days:<1-90>]`: who answered how many mod calls and how fast. - `/staff calls [count:<1-25>]`: the latest mod calls. - `/staff flags`: flagged staff command patterns waiting for a human. - `/staff commands [player:] [count:<1-25>]`: the raw staff command log. - `/shift start`, `/shift end` and `/shift status`: clock in or out by hand, and see your week against your quota. - `/loa request from: to: reason:`: ask for leave. - `/loa list` and `/loa cancel id:`: your leave requests, and withdrawing one. - `/punish add player: type: reason: [duration_days:]`: record a punishment done outside the game. - `/punish log player:`: a player's punishment history. - `/mod kick player: reason:`: kick a player who is in the server, after a confirm step. - `/mod ban player: reason:`: ban a player from the server. - `/mod unban player: [reason:]`: unban a player. - `/mod warn player: reason:`: send a player a warning. - `/mod pm player: message:`: send a player a private message. - `/mod announce style: message:`: show a message to everyone in the server. - `/priority request reason:`: ask staff for a priority. - `/priority end`: end the active priority. - `/priority peacetime mode:`: set peacetime. Staff only. - `/priority status`: the active priority, waiting requests and peacetime. - `/session vote [goal:<1-100>]`: post a start-up vote; the session starts when enough members press Vote. - `/session start`: start a session and post the start-up card with the join code. - `/session shutdown`: end the session and post its report (calls, arrests, money paid, top earner and officer). - `/session lowpop`: ping the session role that the server needs players. The staff commands check Access permissions: Staff view for `/staff`, Shifts view for `/shift`, Leave request for `/loa`, Punishments add or view for `/punish`, Moderate remotely for `/mod`, and Host sessions for `/session`. ### Who can run what - Players never need a permission for their own things: wallet, jobs, bank, crew and so on. - These check Manage Server: `/setup`, `/admin`, `/channels`, `/advertise`, `/wallet user:@member` and `/gov election` (start, end and cancel). - Staff tools check Access permissions the owner gives roles on Dashboard > Roles & access. - Before linking Roblox, a member can use `/verify`, `/help`, `/vote`, `/job list`, `/shop` (browse only), `/property list`, `/business list`, `/event list`, `/crime bounties`, `/crew info` and `/calls recent`. ### In-game chat commands - `;verify CODE`: link your Roblox account with the code from `/verify` or https://metrobot.app/verify. Needs the server's webhook. - `;cad`: officers run the CAD from the game, for example `;cad on CALLSIGN`, `;cad 10-23`, `;cad calls`, `;cad run PLATE` and `;cad help`. The owner can rename or switch it off on Dashboard > CAD settings. - Any other `;name` message is ignored unless one of the server's workflows listens for it. ## 4. The website and dashboard Open https://metrobot.app/servers and sign in with Discord. It lists every server you share with Metro. Each server lives under `/g/` and has six areas. The switcher in the top bar shows only the areas you can open, and Ctrl+K searches every page and setting you can open. ### The six areas | Area | Address | What it is for | Who opens it | |---|---|---|---| | Me | `/g//me` | Your wallet, bank, jobs, garage, shop, record, profile, crew and events | Every member; your own numbers need a linked Roblox account | | Staff Panel | `/g//staff` | Live players, mod calls, staff logs, shifts, quotas, leave, punishments, remote moderation | Staff department members, or roles with Players view or Staff view | | CAD | `/g//cad` | Units, calls and dispatch, lookups, records, warrants, cameras, jail, medical, courts, radio | Members of a department with CAD tools | | Departments | `/g//d/` | A department's home and roster | Members of that department | | City Hall | `/g//city` | Elections, laws, treasury and records; office tools for office holders | Every member | | Dashboard | `/g//manage` | Every server setting | The owner, Discord Administrators and the Manager role | Settings live only in the Dashboard; the other five areas are for using a feature. Cameras are set up at Dashboard > Features > Cameras and used in the CAD. Government is set up at Dashboard > Features > Government and used in City Hall. ### Me (player pages) Wallet, Bank, Garage & licences (with licence tests), Shop and My purchases, Property, Businesses, Jobs (with the reason a job did not pay), Record, Camera sightings, Profile & rank, Perks, Crew, Events, Characters (roleplay characters for the CAD) and Your data. Before you link Roblox, the pages show public information and say "Link Roblox to see" where your numbers would be. ### Staff Panel Live (players on the map), Mod calls, Staff logs, Shifts & activity, Quotas, Leave of absence, Punishments, Remote moderation and the Live panel (pay, adjust, fine, set the enforcement level, post to the log). ### CAD Panels (the picker: Dispatch, a card per CAD department, Courts, Civilian), Live map, Units, Calls, 911 & duty (the dispatcher seat), Lookup (records, person and plate), Records (citations, arrest and incident reports, warrants, BOLOs), Warrants, Hotlist, Cameras with search and replay, Jail, Medical, Courts and Radio with the panic button. ### City Hall Elections, Laws, Treasury, Records and, for office holders, Office. ### Dashboard pages - **Overview:** players, money, jobs and calls at a glance, the go-live checklist and "Needs a look" items. - **Features:** turn modules on and off; each module's settings page sits under it (Jobs, Vehicles, Banking, Businesses, Property, Crime, Jail, Medical, Cameras, Government, Staff, Events, Crews, Ranks and perks, Achievements). - **Setup:** Server-Key, log channel, starting template, webhook URL, PRC authorize link and API keys for other bots. - **Shop:** server items, stock, sales and the Discord shop panel. - **Channels:** where Metro posts. - **Roles & access:** role permissions, presets, the Manager role and advanced mode. - **Departments:** departments, their roles and tools. - **CAD settings:** numbering, call types, dispositions, landmarks, routing and in-game commands. - **Automations:** AFK check, welcome message, timed messages, team restrictions, weather and time, priority and peacetime, mass-command alerts. - **Workflows** and **Workflow runs:** build, switch on, import, export and publish workflows, and see what each run did. - **Forms:** staff applications and the ban appeal form. - **Templates:** save, apply and publish economy templates. - **Grow:** public server page, referrals, server ad, vote rewards and the weekly digest. - **Safety:** the name filter level and extra blocked words. - **Billing:** plan and payment. Server owner only. - **Audit log:** who changed what. - **All settings:** every setting with search, plus **Insights** (money created against money removed). - **Export:** download server data as CSV. Changing a setting opens one bar at the bottom of the page with Reset and Save. Nothing is stored until you press Save. ### Roles & access in short - The server owner has every permission. In Discord commands, Manage Server gives every grantable permission. On the website, Discord's Administrator does; Manage Server alone gives only what your roles give. - The owner can pick a Manager role, which gets everything except billing. - Billing is always the owner's alone. - Presets fill a role in one click: Police, Sheriff, Fire & EMS, DOT, Judges, Staff, Management and Everyone. - A member without a needed permission sees: "You need the permission. Ask the server owner to give your role access on metrobot.app." ### Other public pages - https://metrobot.app/verify: link Roblox and Discord. - https://metrobot.app/pricing: Free and Plus. - https://metrobot.app/status: whether the bot, game polling, the ER:LC API, the website and payments are working, with 30 days of history. - https://metrobot.app/changelog: what changed, newest first. - https://metrobot.app/suggestions: the public suggestion board. - https://metrobot.app/gallery: shared economy templates. - https://metrobot.app/workflows: shared workflows. - https://metrobot.app/servers: your servers, or the public directory when signed out. - https://metrobot.app/me/tickets: your support tickets. ## 5. Metro Plus ### Price Plus costs USD 4.99 per month, per Discord server. It is monthly only; tax may be added at checkout. The only free trial is one week per server, unlocked by the owner voting for Metro on top.gg (`/plus trial`). There is no yearly plan, no lifetime plan, and no Robux payment. ### What Plus adds - Government: offices, elections, laws, taxes, the treasury, council votes and recalls. - Property: zones players rent. - Businesses: shops players buy and run. - Bounties paid from the treasury. - Bankruptcy in banking. - Crew territory and crew wars. - Event seasons and the event calendar. - Camera analytics, longer camera search and evidence export. - Publishing templates to the public gallery. - Workflows: up to 200, with Switch, Loop and schedule triggers. - Higher limits, a faster server status card, and the option to hide the "Powered by Metro" line on public posts. - Polling priority: when two servers are due to be read at the same moment, a Plus server goes first. The polling interval is the same on both plans. ### Free vs Plus limits | Limit | Free | Plus | |---|---|---| | Cameras | 25 | 100 | | Camera rules | 20 | 100 | | Camera hotlist entries | 10 | Unlimited | | Camera search look-back | 24 hours | Everything still kept | | Robbery, contraband and smuggling sites | 10 each | 100 each | | Saved templates | 3 | Unlimited | | Workflows | 5 | Up to 200 | | Workflow runs per hour | 60 | 600 | | Active loans per player | 1 | Up to 10, set by the owner | | Property zones | Not available | 200 | | Server status card refresh | Every minute | Every 15 seconds | Free keeps jobs, wallet, banking, cars, licences, ranks, perks, achievements, crime, jail, police tools, cameras, 911 dispatch, the CAD, staff tools, crews, races, hunts, double pay and treasure drops. ### What a Free server sees Running a Plus-only command on Free gets a card: the feature "is part of Metro Plus — $4.99/month per server; tax may be added at checkout. The server owner can upgrade." with an Upgrade button to the Billing page. On the dashboard, a Plus module switched on for a Free server shows "Saved, not running: needs Plus". ### How to subscribe 1. The Discord server owner opens Dashboard > Billing (`/g//manage/billing`). Nobody else can open Billing, and it cannot be given to a role. 2. Checkout asks for two confirmations: that Plus starts right away, which ends the 14-day right of withdrawal, and that the buyer is 18 or older or has a parent or guardian's permission. 3. Payment is by card through Stripe. The seller of record is Link, part of Stripe, which handles tax, receipts and payment support. 4. Plus starts as soon as checkout finishes. ### Managing and cancelling - The Billing page shows the plan, its status (Active, Past due, Cancelled or Grace period), when it renews or lapses, and where it came from. - Use "Manage subscription" on the Billing page to cancel or change the card, or manage it at link.com. - Cancelling stops the next payment. Plus stays on until the end of the period already paid for, then the server returns to Free. - If a payment fails, the server keeps Plus for a 3-day grace period, then returns to Free. The dashboard shows "Payment failed" meanwhile. - When a server returns to Free, Plus features switch off but their settings are kept, and they come back as they were on upgrade. - Plus belongs to one Discord server. It does not move to another server, and removing and re-adding the bot does not reset it. ### Refunds Payments are not refunded, including for a partly used month, except where the law requires it. A purchase by someone under 18 without a parent or guardian's permission is refunded when Metro is told about it. Refund requests go to a person on the Metro team (see section 7). ### Free ways to get Plus - **Referrals:** each server has a referral link, `https://metrobot.app/r/`, on the Grow page and in `/advertise`. When a new server adds Metro through it and keeps Metro for 14 days with at least 3 players seen, the referring server gets 30 days of Plus. The referred server must be new, cannot share an owner with yours, and counts once. - **Launch offer:** the first 25 servers to finish setup get 30 days free (see section 2). - **Vote trial:** a server that never had Plus gets 7 days free once, when its owner runs `/plus trial` and votes for Metro on top.gg with the button it shows. - **Founding servers:** the Metro team gave the first servers 30 days by hand. - **Creator links:** some invited creators share a link that gives their viewers a 20% off Plus code. For founding, launch-offer and vote-trial days, the owner gets one reminder 3 days before they end. Free days never turn into a charge: nothing is charged unless the owner subscribes, and the server returns to Free with its Plus settings kept. ## 6. 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: | Status | Value | Meaning | Fix | |---|---|---|---| | Connected | `valid` | PRC accepts the key | Nothing | | Rejected by PRC | `invalid` | PRC says the key is wrong or expired, or PRC kept refusing Metro | Make a new key in ER:LC and paste it on Setup or run `/setup` | | Banned by PRC | `banned` | PRC banned this Server-Key | Make a new key in ER:LC and store it | | Not set up | `none` | No key stored | Run `/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) | State | Meaning | |---|---| | `offline` | Nobody is in the server. Metro checks every 60 seconds for players. Normal | | `idle` | Players are online. Metro reads every 15 seconds | | `active` | A job, run or 911 call is live, or cameras are on. Metro reads every 5 seconds | | `burst` | A short faster stretch, at most 30 seconds | | `degraded` | PRC is struggling, so Metro widened the interval. It narrows again by itself. The dashboard says "Poll interval widened" | | `broken` | Metro 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. | Circuit | Meaning | |---|---| | `closed` | Normal | | `open` | Metro stopped reading the server, for the reason below | | `half` | Metro is testing whether the server can be read again | | Reason | What happened | Fix | |---|---|---| | `key_invalid` | PRC said the Server-Key is wrong or expired | New key in ER:LC, then `/setup` or Setup page | | `key_banned` | PRC banned the Server-Key | New key in ER:LC, then store it | | `consecutive_403` | PRC refused Metro three times in a row, so Metro stopped before PRC blocks it | New key in ER:LC, then store it | | `bot_removed` | Metro was removed from the Discord server | Add Metro back and run `/setup` | ### PRC error codes (last error code) | Code | Meaning | What to do | |---|---|---| | 0 | Unknown error | Wait; if it repeats, open a ticket | | 1001 | PRC could not reach Roblox | Temporary. Metro backs off and retries by itself | | 1002 | PRC internal error | Temporary. Metro backs off and retries by itself | | 2000 | No Server-Key sent | Store a key with `/setup` | | 2001 | The Server-Key is malformed | Copy the key again from ER:LC | | 2002 | The Server-Key is invalid or expired | Make a new key and store it | | 2003 | PRC rejected Metro's own access | Not the owner's fault: a person on the Metro team must look | | 2004 | The Server-Key is banned | Make a new key and store it | | 3001 | A command was missing | Usually harmless | | 3002 | The server is offline (no players) | Normal. Metro waits for players | | 4000 | Not authorized for this server | Check the key belongs to this server; approve Metro with the authorize link | | 4001 | Rate limited by PRC | Temporary. Metro slows down by itself | | 4002 | That in-game command is restricted | The server's settings block it | | 4003 | That in-game message is prohibited | PRC refused the text | | 9998 | The resource is restricted | The server may lack the API pack or permission | | 9999 | The server's API module is out of date | Restart 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 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. ## 7. What needs a person on the Metro team Answers drawn from this guide never decide these. Each one goes to a person on the Metro team, who replies on the same ticket. - **Refunds of real money.** Plus payments are not refunded except where the law requires it, or for a purchase by someone under 18 without permission. A person decides every refund request. Receipts, tax and card questions can also go to Link, part of Stripe, at link.com. (`/admin refund` is different: it refunds in-game money and is the server's own staff's tool.) - **Billing disputes and payment problems** that "Manage subscription" or link.com cannot fix. - **Granting Plus.** Only the Metro team can give Plus by hand. The launch offer and referrals apply on their own when their rules are met. - **Moving Plus to another server.** Plus belongs to one server and does not move. - **Bans and appeals.** Metro does not ban players from ER:LC servers; each server's own staff do. A player appeals a server ban on that server's appeal page, `https://metrobot.app/appeal/`, when the server has one, or with that server's staff. The Metro team cannot lift a server's ban. Being stopped from posting on the suggestion board is decided by a person. - **Fines and in-game money on a server.** The server's owner and staff handle these: fine appeals with `/gov appeal file` (Plus) or the server's staff, balance fixes with `/admin adjust`. The Metro team does not change a server's economy. - **Bug reports.** Say what you did, what you expected, what happened, when, on which server, and any Ref from an error message. A person checks and replies. - **PRC rejecting Metro itself (code 2003)**, or anything on https://metrobot.app/status shown as an incident. - **Turning in-game sending on or off for a server.** - **Deleting help tickets and suggestions, parent or guardian requests, and security reports:** email legal@metrobot.app. ## 8. Privacy in brief - Server-Keys are stored encrypted. The website can store a key but never read it back, and keys are never logged or shown again. - Metro reads only what the ER:LC API reports: usernames, ids, teams, staff permission levels, callsigns, wanted stars, vehicles, positions, kills, staff commands, mod calls and 911 calls. - Live positions are kept 15 minutes. Camera sightings are kept 24 hours by default, up to 7 days on Plus. The camera search log is kept 90 days. Election ballots are kept 30 days, then only totals. Plus purchase records are kept 5 years for bookkeeping law. Help tickets and suggestions are kept until deleted on request. - You must be 13 or older to use Metro. A parent or guardian can ask for a child's data to be deleted by email to legal@metrobot.app with the child's Roblox username and the server. - **Your data:** https://metrobot.app/me/data. Download my data gives a file of what Metro stores about you. Delete my data removes your name from the records, deletes your camera sightings and, for "everywhere", every Roblox link you have had. Balances and fines stay without your name. Help tickets and suggestions are not included; email legal@metrobot.app for those. - Players can delete their own camera observations on a server from Me > Camera sightings, and hide themselves from every public server page on Me > Profile. - Public pages show Roblox usernames only. - Owners can see who searched the cameras or looked up a person or plate, and when. - Full details: https://metrobot.app/legal/privacy. Terms, including cancelling and refunds: https://metrobot.app/legal/terms. Security reports: legal@metrobot.app, see https://metrobot.app/security.