's bl.aagh

BSD, Ruby, Rust, Rambling


An IRC bot for annotating channels

[rust] [irc]

annoirc is an Internet Relay Chat bot, make to provide page titles and descriptions when people enter a URL on a channel.

Example image

It’s written in fully async Rust, and has served a few small channels successfully for several years (as of late 2022).

It supports connections to multiple IRC servers, making multiple HTTP requests concurrently, deduplicating and rate-limiting those requests, caching results, and reconfiguring itself on SIGHUP.

It’s a bit messy internally, but I learned a lot about working with Tokio in making it, which was the primary goal. It speaks to Rust’s strengths that I was able to implement quite so much in such a fashion and still have the result be reliable and relatively easy to modify.