Skip to content


Subversion checkout URL

You can clone with
Download ZIP
A simple and small IRC library/bot framework written in Clojure.
Clojure Shell
Latest commit f230935 @Raynes Add link to duder's bot.


Irclj is a very simple IRC library for Clojure. It is entirely asynchronous and callback-based. It has been a WIP for quite a while (I don't have a ton of time to spend on it), but it is entirely functional and is being used by some projects already. Just don't be surprised if it's missing a feature that might seem common place. Good news is that the infrastructure to easily add features is there.


Note that this is still a work in progress. Some things may not work, or obvious things may be missing. Check out the issue tracker to see what needs to be done, and please contribute if you can!

user=> (require '[irclj.core :as irc])
user=> (def connection (irc/connect "" 6667 "hotbot" :callbacks {:privmsg (fn [irc type s] (prn irc type s))}))
user=> (irc/join connection "#4clojure")
user=> (irc/kill connection)
user=> (def connection (irc/connect "" 6667 "hotbot" :callbacks {:privmsg (fn [irc type & s] (prn irc type s))}))
user=> (irc/join connection "#4clojure")
...say something in-channel...
<buncha shit gets printed>

Irclj is callback based, so you can register callbacks on any kind of IRC protocol message, including the numeric messages. Most of the time you're going to want to capture PRIVMSG as demonstrated above though. Check out events.clj and process.clj.

For a larger, but also simple example of a working bot, check out this fellow's bot:


Licensed under the EPL, same as Clojure itself.

Something went wrong with that request. Please try again.