Pour commencer

Installation et premier bot

Installez le paquet, authentifiez-vous et lancez votre premier salon.

Prérequis

  • Node.js 20.18.1 ou plus récent.
  • Un compte bonk.io (recommandé pour les salons 24h/24).
  • Le paquet est en ESM ("type": "module") ; une version CommonJS est aussi fournie.

Installation

bash
npm install bonktools
# ou : pnpm add bonktools · yarn add bonktools

Le paquet apporte ses dépendances (socket.io-client, werift, ws, pino, zod, undici, eventemitter3) et fournit les types TypeScript.

Authentification

La bibliothèque prend en charge deux modes :

ts
import type { AuthOptions } from 'bonktools';

// Compte enregistré (recommandé pour le 24h/24)
const auth: AuthOptions = { type: 'registered', username: 'mon_utilisateur', password: 'mon_mot_de_passe' };

// Invité (sans appel HTTP d'authentification)
const guest: AuthOptions = { type: 'guest', guestName: 'BonkBot' };

Avec type: 'registered', la bibliothèque appelle bonk2.io/scripts/login_legacy.php et réutilise le token pour tous les salons d'une même session.

Votre premier bot

Créez bot.ts :

ts
import { createRoom } from 'bonktools';

const room = await createRoom({
  auth: { type: 'registered', username: process.env.BONK_USER!, password: process.env.BONK_PASS! },
  desiredState: { roomName: 'Bonjour, bonk !', password: '', maxPlayers: 6, mode: 'b', rounds: 3 },
});

console.log('Lien du salon :', room.shareLink);

room.on('player-join', (p) => room.chat(`Bienvenue, ${p.userName}!`));
room.on('chat-message', ({ message }) => {
  if (message === '!ping') room.chat('Pong!');
});

Lancez-le :

bash
BONK_USER=votre_utilisateur BONK_PASS=votre_mot_de_passe npx tsx bot.ts

createRoom() ne se résout qu'après la confirmation du salon par le serveur, donc room.shareLink est déjà disponible.

Et ensuite ?