Documentation

Installation, permissions, troubleshooting and FAQ.

Installation

  1. Invite the bot. Click Add to Discord and pick your server. Grant the permissions listed below for the best experience.
  2. Let it post its consent cards. When Computer joins, it posts a privacy-policy card. An admin clicks I AGREE to allow the server to be listed in the Phone Book; the rules card appears the first time anyone uses a /phone command.
  3. Wire the jack. An admin runs /phone register channel:#jack to choose the channel that will relay calls.
  4. Open the control panel. /setup gathers everything: wire or delist the jack, toggle the safety filters and DND, read the house rules, and grab the vote link.
  5. Optional: start a game with /sus new, or find a crew from any server with /mm queue.

See every command →

What the bot needs, and why

Permission / scopeNeeded forIf missing
bot + applications.commandsBeing present and registering slash commands.The bot cannot be added or used.
Send Messages, Embed LinksLobbies, call cards, notices and the Phone Book.Most panels cannot render.
Manage WebhooksRelaying calls with the sender's real name and avatar.Limited mode: messages arrive as plain **name** text lines.
Create Public Threads, Send Messages in ThreadsOpening the matchmaking game thread in the hub server.Cross-server matchmaking cannot launch.
Manage Server (for admins)Running /setup, /phone register, block/trust and data commands.Those admin commands are hidden.

The invite link requests the same permission bitfield the public listing uses. If you self-host, you control the invite yourself.

Message Content Intent. The telephone relay reads channel messages, so the bot application must have the privileged Message Content Intent enabled in the Discord developer portal. On the public bot this is already on; only self-hosters need to set it.

Running your own copy

Computer is a Python bot built on discord.py. The internal package is still named suspicion, so the module you launch is suspicion.main.

Requirements: Python 3.11 or newer, plus discord.py>=2.6, python-dotenv>=1.0 and aiohttp>=3.9.

git clone <your repo> computer
cd computer
python -m venv .venv && . .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env      # then set DISCORD_TOKEN
python -m suspicion.main

The bot needs the Message Content Intent turned on in the developer portal before it will start. Games live in memory (a restart drops running matches); accounts, the phone registry and votes live on disk and survive. Point SUS_DATA_DIR at a persistent folder for those files.

Hosting notes: the repository ships a render.yaml blueprint for Render, and the bot runs happily as a systemd service on a home server. The vote webhook is optional — outbound polling works without a public URL.

When something is wrong

The bot will not start / PrivilegedIntentsRequired

Enable the privileged Message Content Intent in the Discord developer portal → your app → Bot → Privileged Gateway Intents. The telephone reads channel messages, so startup fails without it.

The phone is silent / calls go nowhere

The two consent gates must be cleared. An admin clicks I AGREE on the privacy card, and the rules card must be accepted too. Until then the whole line is dark. Check the switchboard's My listing entry to see where you stand.

Messages arrive as plain text, not with names and avatars

The bot is in limited mode because it lacks Manage Webhooks. Grant it in the channel or server permissions for the full experience.

Vote rewards are not showing up

Polling needs a top.gg API token (TOPGG_TOKEN). The webhook is optional and needs a public URL plus the shared secret. Run /vote to force a fresh check — all three paths are deduplicated.

A running game vanished

Games are held in memory. Restarting the bot ends running matches. Accounts, career stats and the phone registry are stored on disk and come back; only active calls hang up.

Matchmaking says I need to join the hub server

Cross-server matches run in a thread on the hub server, so you must be a member there to queue. Join it from the support invite, then try /mm queue again.

Matchmaking found nobody, or the countdown folded

The queue needs at least four waiting players and lives in memory, so a bot restart empties it. If players leave before the countdown ends, the launch is cancelled. Use /mm status to see the queue, or /mm queue to start it again.

I cannot see an admin command

Admin commands are permission-gated. You need Manage Server for house settings, and the operator-only data commands are limited to the bot owner.

Frequently asked questions

Is the telephone a real voice call?

No. The cross-server telephone relays text between two channels on different servers. It does not open a Discord voice connection, and the website cannot place any call at all.

Can this website start a game or ring a server?

No. Every demo here is simulated in your browser. Starting games and placing calls happen only through the Discord bot inside Discord.

Do I have to use both features?

No. The game (/sus), the ship phone (/user) and the cross-server line (/phone) are independent. Use whichever you like.

What is cross-server matchmaking?

/mm lets players from any server queue together. Once enough are waiting, the bot opens a public thread on the hub server and runs a normal Space Mafia game there — the play still happens in DMs. You do not have to share a server with the other players, but you do have to be in the hub server.

Is anything charged?

The bot is free. Premium perks (such as call forwarding) come from voting on top.gg or from membership of the support server — not from payment.

How is my data handled?

You keep normal data rights: /sus export and /phone data export give you a copy; /sus forget and /phone data forget erase it. AI meeting chat is optional and can be disabled per user or per server. Details are in the Privacy Policy.

Getting help