Biblioteca
Criar e entrar em salas
createRoom, joinRoom e todas as opções de configuração.
Criar uma sala: createRoom()
Retorna um BonkRoom já conectado e ativo. Ele só resolve depois de receber o link da sala do servidor.
ts
import { createRoom } from 'bonktools';
const room = await createRoom({
auth: { type: 'registered', username: '...', password: '...' },
desiredState: {
roomName: 'Minha Sala',
password: '', // string vazia = sem senha
maxPlayers: 6,
mode: 'b',
rounds: 3,
},
hidden: false, // aparece na lista pública
timeoutMs: 10_000, // rejeita com RoomCreationTimeoutError se demorar mais
});
console.log(room.shareLink); // https://bonk.io/123456abcdeOpções de createRoom()
| Campo | Tipo | Padrão | Descrição |
|---|---|---|---|
auth | AuthOptions | — | Estratégia de autenticação (obrigatório) |
desiredState | DesiredRoomState | — | Configuração da sala (obrigatório) |
hidden | boolean | false | Sala oculta na lista pública |
minLevel | number | 0 | Nível mínimo para entrar |
maxLevel | number | 999 | Nível máximo para entrar |
timeoutMs | number | 10000 | Tempo máximo para receber o link da sala |
protocolVersion | number | 49 | Versão do protocolo do bonk.io |
reconnectPolicy | ReconnectPolicyOptions | padrões | Política de reconexão (veja Sessões 24/7) |
DesiredRoomState
ts
interface DesiredRoomState {
roomName: string;
password: string; // '' = sem senha
maxPlayers: number; // 1–8
mode: string | number; // 'b', 'ar', 'ard', 'sp', 'v', 'f'...
engine?: string; // 'b', 'f'...
rounds: number;
map?: string | null; // blob LZ-String do mapa
}Link da sala
O link tem o formato https://bonk.io/<id com 6 dígitos><bypass>. A biblioteca preenche o id com zeros à esquerda (ids menores que 100000 geram links como 006813vnxpi).
Entrar em uma sala: joinRoom()
ts
import { joinRoom } from 'bonktools';
const room = await joinRoom('https://bonk.io/123456abcde', {
auth: { type: 'registered', username: '...', password: '...' },
role: 'host', // 'host' (time 1) ou 'spectator' (time 0)
password: '', // senha da sala, se houver
});A biblioteca interpreta a URL, resolve o servidor via autojoin.php e conecta. Resolve depois de receber o estado da sala, ou rejeita com RoomJoinTimeoutError.
Também aceita um endereço já resolvido, sem chamada HTTP:
ts
const room = await joinRoom(
{ server: 'b2seattle1', joinId: '...', bypass: 'abcde' },
{ auth, role: 'spectator' },
);Erros
ts
import { RoomCreationTimeoutError, RoomJoinTimeoutError } from 'bonktools';
try {
const room = await createRoom({ auth, desiredState });
} catch (err) {
if (err instanceof RoomCreationTimeoutError) {
// o link da sala não chegou dentro de timeoutMs
}
}Veja também Erros e solução de problemas.