IRC Protocol
Repartee implements comprehensive IRC protocol support covering RFC 2812 and a wide range of IRCv3 extensions, all negotiated automatically at connection time.
Core Protocol
The core IRC layer handles all standard protocol operations defined in RFC 2812:
- Connection registration -- NICK, USER, PASS, and capability negotiation
- Channel operations -- JOIN, PART, KICK, INVITE, TOPIC, MODE, ban lists
- Messaging -- PRIVMSG, NOTICE to channels and users
- Server queries -- MOTD, LUSERS, VERSION, STATS, INFO, ADMIN, TIME, LINKS
- User queries -- WHO, WHOIS, WHOWAS, NAMES, LIST
- CTCP -- VERSION, PING, TIME, ACTION, and custom CTCP queries
IRCv3 Capabilities
Repartee negotiates IRCv3 capabilities during connection via CAP LS/REQ/ACK. The following capabilities are requested when the server supports them:
| Capability | Description |
|---|---|
multi-prefix | Multiple mode prefixes per nick (e.g. @+nick) |
extended-join | Account name and realname in JOIN messages |
server-time | Message timestamps from the server |
account-tag | Account name on every message |
cap-notify | Server-side capability change notifications |
away-notify | Real-time away status changes |
account-notify | Account login/logout notifications |
chghost | Real-time ident/hostname changes |
echo-message | Authoritative echo of sent messages |
invite-notify | Notifications for channel invites |
batch | Grouped message batches (netsplit/netjoin) |
userhost-in-names | Full user@host in NAMES replies |
message-tags | Arbitrary IRCv3 message metadata |
SASL Authentication
Repartee supports three SASL mechanisms for authenticating with IRC services:
- PLAIN -- username and password authentication
- EXTERNAL -- client certificate-based authentication
- SCRAM-SHA-256 -- challenge-response authentication with no plaintext password transmission
Tip: SASL authentication is configured per-server in your config.toml. Repartee automatically selects the strongest available mechanism.
WHOX Support
WHOX (extended WHO) is auto-detected when the server advertises it via ISUPPORT. Repartee uses WHOX queries to populate account names and full user@host information for nick entries, providing richer user data in the nick list and enabling account-based features like extbans.
Extban
Repartee supports the $a:account extended ban type, which bans users by their services account name rather than by hostmask. This is more reliable than hostmask bans since accounts persist across reconnections and host changes.
Use the /ban -a shorthand to quickly set an account-based ban on a user in the current channel.
DCC CHAT
Repartee supports direct peer-to-peer chat connections via the DCC CHAT protocol:
- Active and passive modes -- initiate direct connections or use reverse (passive) DCC for users behind NAT
=nickbuffer convention -- DCC chats appear as=Alicein the buffer list, matching irssi behavior- Auto IP detection -- from the IRC socket, with manual override via
/set dcc.own_ip - Auto-accept masks -- configure trusted hostmasks to automatically accept DCC requests
- Tab-completable commands --
/dcc chat,/dcc close,/dcc list,/dcc reject
Flood Protection
Repartee includes built-in flood protection to prevent being disconnected for sending too many messages too quickly. Outgoing messages are rate-limited to comply with server-side flood thresholds, with automatic queuing and draining.
Netsplit Detection
Netsplit events (server-to-server link failures) are automatically detected and displayed as collapsed, human-readable summaries rather than flooding your channel with individual QUIT and JOIN messages. This uses the IRCv3 batch capability when available, with pattern-based heuristic detection as a fallback.
Multi-Network Support
Repartee supports connecting to multiple IRC networks simultaneously. Add multiple [servers.*] sections to your config file and each network gets its own connection, set of channel buffers, and independent state. All connections share a single event loop for efficient resource usage.
Next: See the IRCv3 Support reference for detailed protocol coverage, or the Configuration guide to set up server connections.