twitch-irc-rs
My attempt at a Twitch IRC library for the Rust programming language, using the recently stabilized async rust traits/language features.
Example usage (This is the simple_listener
example, see examples/simple_listener.rs
and run it with cargo run --example simple_listener
):
use StaticLoginCredentials;
use ClientConfig;
use TCPTransport;
use TwitchIRCClient;
pub async
Current features:
- Connection pool, new connections will be made based upon load
- Will create a new connection if all existing connections have already joined 90 channels (number is configurable)
- Will create a new connection if all connections are currently busy (if it has recently sent a lot of messages and you risk a long delay from your messages being queued up server-side)
- Automatic reconnect of failed connections
- Automatically rejoins channels if connections fail
- Modern async interface
- Automatic rate limiting of new connections
- Supports automatic token refresh for tokens that are not infinitely lived (also supports infinitely lived tokens separately)
- Optionally exports metrics, using the
metrics
crate (Compatible with prometheus and many others).
TODO things:
- Implementation of twitch-imposed rate limits (PRIVMSG, Whisper)
- Support plaintext connections in addition to the TLS and WSS types already supported