Disqueue is an automated Discord matchmaking bot that pairs players the moment they start playing a game — no queue, no commands, no waiting. Unlike traditional Discord LFG or queue bots, Disqueue uses Discord presence data to detect when two users across any server are playing the same game and instantly matches them.
It also includes a real‑time web dashboard, powered by FastAPI and WebSockets, where users can manage preferences, view match history, and customize their matchmaking experience.
Disqueue is designed for gaming communities, competitive teams, co‑op players, and servers that want hands‑free, presence‑based matchmaking.
- Automatic presence detection — matching starts the moment you start playing
- Cross-server matching — pairs players across every server Disqueue is in
- Configurable rules — region, language, mode, cooldowns, limits, DND hours
- Optional match confirmation via DM
- Blocklist support
- Real‑time web dashboard (React + WebSocket)
- Private match threads for each confirmed pair
flowchart TB
DB[(PostgreSQL<br/>Supabase)]
Bot[Discord Bot]
API[FastAPI Backend]
Web[React Frontend]
DB <--> Bot
DB <--> API
DB -.LISTEN / NOTIFY.-> API
API <--> |REST + WebSocket| Web
Disqueue’s bot and backend share a single PostgreSQL database.
Postgres triggers NOTIFY events for new matches, preference updates, and notifications, which the backend listens for and pushes to clients in real time.
| Bot | Python, discord.py |
| Backend | FastAPI, asyncpg |
| Frontend | React 19, Vite, Tailwind |
| Infra | Supabase, Render, Vercel, Bot-Hosting.net |
Setup instructions
Prerequisites: Python 3.11+, Node.js 20+, a PostgreSQL database, and a Discord application with a bot token and OAuth2 credentials.
Run schema.sql against your Postgres instance first.
# Bot
cd bot && pip install -r requirements.txt
cp .env.example .env # DISCORD_TOKEN, DATABASE_URL
python main.py# Backend
cd backend && pip install -r requirements.txt
cp .env.example .env # DATABASE_URL, DISCORD_CLIENT_ID/SECRET, JWT_SECRET
uvicorn main:app --reload# Frontend
cd frontend && npm install
cp .env.example .env # VITE_API_URL, VITE_WS_URL
npm run devEnvironment variables
Bot — DISCORD_TOKEN, DATABASE_URL
Backend — DATABASE_URL, LISTENER_DATABASE_URL, DISCORD_CLIENT_ID, DISCORD_CLIENT_SECRET, DISCORD_REDIRECT_URI, FRONTEND_CALLBACK_URL, JWT_SECRET
Frontend — VITE_API_URL, VITE_WS_URL
Deployment
Each service deploys independently and points at the same Supabase instance.
- Bot → Bot-Hosting.net
- Backend → Render, UptimeRobot
- Frontend → Vercel
- Database → Supabase
Full command list
| Command | Description |
|---|---|
/enable |
Start receiving match notifications |
/disable |
Stop receiving match notifications |
/status |
See who's currently playing what |
/match-history |
View your recent matches |
/set-game-mode |
Choose Casual, Ranked, or Any |
/match-confirmation |
Toggle manual confirmation on/off |
/set-match-limit |
Set a daily match cap |
/set-match-cooldown |
Set time between matches |
/block / /unblock |
Block or unblock a user by mention |
/blockid / /unblockid |
Block or unblock a user by ID |
/set-region |
Set your matching region |
/set-language |
Set your matching language |
/set-name |
Set your display name |
/set-bio |
Set a short bio shown to matches |
/preferences |
View your current settings |
/set-timezone |
Set your timezone |
/set-dnd |
Set quiet hours |
/unset-dnd |
Clear quiet hours |
/friend-notifications |
Get notified when friends start playing |
/reset |
Reset all preferences to default |
- Ranked skill-based matching
- Server-level configuration
- Match feedback / rating system
