No description
  • TypeScript 99.5%
  • JavaScript 0.5%
Find a file
2026-05-03 04:57:21 +02:00
.claude first commit 2026-04-28 01:33:47 +02:00
prisma first commit 2026-04-28 01:33:47 +02:00
src feat: enhance match flow service with lobby wait functionality, temp voice channel management and compromised account timeout with text channel 2026-05-03 04:57:21 +02:00
tests Fix elo calculation and add member counter 2026-05-02 22:46:10 +02:00
.env.example first commit 2026-04-28 01:33:47 +02:00
.gitignore first commit 2026-04-28 01:33:47 +02:00
4mans-bot.service first commit 2026-04-28 01:33:47 +02:00
bun.lock first commit 2026-04-28 01:33:47 +02:00
bunfig.toml first commit 2026-04-28 01:33:47 +02:00
drizzle.config.ts first commit 2026-04-28 01:33:47 +02:00
ecosystem.config.cjs first commit 2026-04-28 01:33:47 +02:00
eslint.config.js first commit 2026-04-28 01:33:47 +02:00
package.json first commit 2026-04-28 01:33:47 +02:00
README.md first commit 2026-04-28 01:33:47 +02:00
tsconfig.json first commit 2026-04-28 01:33:47 +02:00

4Mans Bot

Bot Discord per Rocket League 4mans con coda, creazione partite, Elo personalizzato e controllo rank tramite staff.

Avvio Rapido (Bun)

  1. Installa dipendenze:
    • bun install
  2. Copia il file ambiente:
    • copy .env.example .env
  3. Compila .env con i tuoi valori Discord/PostgreSQL.
  4. Genera il client Prisma:
    • bun run prisma:generate
  5. Applica migrazioni:
    • bun run prisma:migrate --name init
    • bun run prisma:migrate --name rank-s-staff-controls
  6. Avvia in sviluppo:
    • bun run dev

Policy Rank

  • Rank S, A, B, C sono supportati.
  • Rank S non e ottenibile tramite Elo automatico.
  • Solo lo staff puo promuovere da Rank A a Rank S.
  • I range Elo sono modificabili da staff via comando e persistiti su database.

Permessi Staff con Role IDs

Il bot usa role IDs, non permessi Administrator.

Configura in .env:

  • STAFF_ROLE_IDS="123456789012345678,987654321098765432"

Se vuoto, i comandi staff rispondono con messaggio di configurazione mancante.

Canali Richiesti

Configura in .env:

  • RANK_{S,A,B}_QUEUE_CHANNEL_ID: canale testo per tier che contiene il pannello coda con pulsanti.
  • RANK_{S,A,B}_CATEGORY_ID: categoria per tier dove creare canali temporanei match.
  • RANK_{S,A,B}_ROLE_ID: ruolo Discord assegnato al tier (sincronizzato in automatico dopo le partite).

Architettura Comandi (un file per comando)

Comandi Slash

  • /ping
  • /queue action: entra|esci|stato|svuota
  • /report match_id winner
  • /rank action: io|top
  • /rankcheck action: crea|approva|rifiuta|aperti
  • /staffrank action: promuovi_s|rimuovi_s
  • /rankconfig action: mostra|imposta

Nota: la coda e ora anche gestita tramite pulsanti nel pannello fisso del canale queue.

Nuovo Flusso Partita (automatico)

  1. Nel canale queue c'e sempre un pannello con 2 pulsanti: entra/esci coda.
  2. Se qualcuno scrive nel canale queue, il pannello viene rigenerato come ultimo messaggio.
  3. Quando la coda raggiunge 4 giocatori, vengono creati:
  • un canale testo temporaneo di partita
  • un canale voce lobby temporaneo
  1. Nel testo partita i 4 giocatori votano il metodo squadre:
  • Capitani random
  • Squadre random
  1. Con maggioranza (3/4):
  • Capitani: primo capitano sceglie 1 compagno, l'altro prende il restante
  • Random: squadre generate casualmente
  1. Dopo la scelta squadre vengono creati 2 canali voce (limite 2 utenti ciascuno).
  2. Nel canale testo della partita compare un embed con Team 1/Team 2 e pulsanti voto vincitore.
  3. Con maggioranza report (3/4) viene assegnato Elo/MMR.
  4. A fine partita vengono eliminati:
  • canale testo partita
  • voce lobby partita
  • due canali voce team

Il canale voce lobby viene eliminato anche se resta vuoto dopo uscita giocatori.

Audit Log Staff

Le azioni staff vengono salvate nel database in StaffActionLog. Esempi: svuota coda, promozione/rimozione Rank S, update range rank, azioni ticket.

Prossimo Step Piano

  • Integrazione webhook/API del sistema ticket esterno per sincronizzazione automatica stato ticket.