version 0.3.0 · GPL-3.0-or-later
Write the interface. This handles IRC.
An IRCv3 engine with the client model built in, for Rust, C, TypeScript, Python and Dart. It does no I/O: you feed it bytes and the time, it tells you what happened and what to send. Works against any IRC server.
cargo add obby-client
TypeScript
Browser and Bun, one build. npm i obby-client
Python
Wheels for every platform. pip install obby-client
Dart
Over the C ABI. dart pub add obby_client
C
The generated header, typed config, commands and events
obby-proto
The wire format alone: lines, tags, casemapping, ISUPPORT
// bytes and time go in client.handleConnected(); client.handleBytes(chunk); client.tick(monotonicMs, unixMs); // bytes, events and the next wake-up come out client.pollTransmit(); client.pollEvents(); client.pollTimeout();
// every command is a method client.join("#obby"); client.sendMessage("#obby", "hello"); client.setTyping("#obby", "active"); client.fetchHistory("#obby", null, 50); // and the model is always readable client.model().channels;
<script type="module"> import init, { ObbyClient } from "https://cdn.jsdelivr.net/npm/obby-client/obby_wasm.js"; await init(); </script>