Cinch (or GitHub repo) is a new Ruby "microframework" for creating IRC bots. Effectively, Cinch is a library that both abstracts away all of the complexities of dealing with IRC servers and presents a DSL for rolling out your own functionality.
Cinch's Hello Bot example demonstrates how you can easily create a bot that connects to an IRC server (irc.freenode.org), joins a channel (#cinch) and then replies to greetings:
irc = Cinch.setup :verbose => true do server "irc.freenode.org" nick "Cinchbot" channels %w(#cinch) end irc.plugin "hello" do |m| m.reply "Hello, #{m.nick}!" end irc.run
Cinch isn't the first attempt at building a DSL for creating bots in Ruby. Autumn is perhaps the most famous existing library, but it's extremely heavy compared to Cinch. Cinch vs Autumn is almost like Sinatra vs Rails. Other libraries include Rbot and Butler.
Update: I've been reminded in the comments that Isaac is another IRC bot DSL that's very much like Cinch.
If you prefer to get nearer the wire and see how the IRC protocol works, this Ruby code snippet provides basic IRC functionality.

Comments
robgleeson ·
Reminds me of Isaac ( http://github.com/ichverstehe/isaac ).
Peter Cooper ·
I had a hunch there was one I was missing! Great call out.. I'll try and work this in somehow.
KTamas ·
It's weird that nobody seems to know about RBot, which is a very mature Ruby IRC Bot:
http://ruby-rbot.org/
Zach Karpinski ·
The big problem with Rbot is that it requires the custom BDB library which frequently is not available. The site is located in France and I have frequently had problems retrieving it. Rbot should keep a local copy at least.
Adam Pearson ·
I have also created smirc (http://github.com/radamant/smirc) heavily based on Isaac, but with a less DSL-ish approach.