
Mirage Arena Assistant
Discord-bot för klubbens server: supportärenden, tillfälliga röstkanaler, moderering och rollskydd.
- År
- 2026
- Roll
- Backend-utveckling, arkitektur
- Klient
- Mirage Arena (eget projekt)
- Datum
- 15 mars 2026
Utmaning
Klubbens Discord-server fortsatte växa, och rutinen började äta admins tid: starta upp röstkanaler för turneringar, hantera supportärenden, hålla koll på roller. Vi ville ha ett automatiserat lager som inte kräver mikromanagement.
Vad vi byggde
En Discord-bot i Python 3.11+ med discord.py 2.x och slash-kommandon. Helt async-stack: httpx för HTTP mot sajtens API, pydantic-settings för config.
Arkitekturen har en tydlig ansvarsfördelning:
- cogs/ — Discord I/O (kommandon, events, listeners)
- services/ — affärslogik, validering, regler
- api-client/ — kommunikation med huvudsajten (det enda persistenta lagret)
Den uppdelningen låter oss testa funktionskod utan en live Discord-anslutning — services och api-client mockas in. Nya kommandon levereras snabbare.
Funktioner:
- Supportärenden med automatisk stängning efter N dagars inaktivitet
- Tillfälliga röstkanaler (join-to-create) — en användare ansluter till en speciell kanal, boten skapar ett privat röstrum, och tar bort det när alla har lämnat
- Skydd för privilegierade roller — om någon delar ut en owner-roll utanför det officiella flödet återkallar boten den
- Schemalagd städning av servicekanaler
Driftsättning
Docker Compose eller systemd på en Linux-VPS. Roterade loggar, graceful shutdown via SIGTERM. Om API-anslutningen till sajten tappas — circuit breaker med exponentiell backoff.
Resultat
Kör 24/7 utan handpåläggning. Admin-teamet lägger en bråkdel av tiden på rutinarbete jämfört med tidigare.