Я начал использовать IRC в молодом возрасте и всегда был очарован им. В качестве языкового упражнения я думал о программировании простого IRC-клиента на Ruby с обувь в качестве графического интерфейса. Мой вопрос к вам, милостивые господа, с чем мне нужно познакомиться, чтобы начать это великое приключение (кроме обуви и, конечно же, Руби)? Я полагаю, что есть какая-то спецификация протокола IRC. Есть указатели?

Спецификация IRC изложена в RFC 1459.
I found this gem on Wikipedia. Sounds intimidating.
На самом деле это не так.
Подключитесь по Telnet к IRC-серверу и убедитесь в простоте протокола из первых рук. Самая сложная часть - это рукопожатие, после этого все очень просто.
Однажды я реализовал клиент и сервер с еще двумя ребятами (как часть курса) .
Могу сказать вам, что RFC, на который вы уже ссылались, великолепен.
Я бы также попробовал просто понюхать соединение с существующим клиентом, чтобы лично увидеть, как все работает.
Не совсем ответ на ваш вопрос, но он может быть полезен. Если вы используете Ruby, я обнаружил, что проект Autumn Leaves - отличный способ создать IRC-бота с использованием Ruby:
http://github.com/RISCfuture/autumn/tree/master
Это в значительной степени Jibble мира Ruby.
В более ранней публикации упоминался RFC1459. Хотя это очень хорошее введение в IRC, его фактически заменили RFC 2810-2813. Вот более полный список документации, необходимой для программирования всего, что связано с IRC:
Обратите внимание, что RFC2810-RFC2813 написаны только моей IRCnet (после большого раскола). IRCnet - единственная крупная сеть, поддерживающая каналы !. 005 разобрать и понять каждый токен ... сложно. Различные сети поддерживают другие режимы каналов (например, q, a и h как владелец, администратор и полуоп)
На самом деле разбор 005 не такой уж и сложный. Новые токены добавляются не часто (тем более в будущем, когда IRCv3 будет принят), а анализ текущих довольно прост: github.com/cinchrb/cinch/blob/master/lib/cinch/isupport.rb
Вы не разбираете все токены. Вы просто разбираете несколько токенов, но не все.
Например. вы не ищите токены CNOTICE или CPRIVMSG.
Если вы присмотритесь, вы увидите, что код там имеет только особые случаи для нескольких токенов и предполагает, что все остальные токены являются логическими (например, CNOTICE или CPRIVMSG) или строковыми значениями, если они содержат '=' (например, SOMETHING=foobar). Таким образом, он поддерживает любые будущие токены этих типов. Фактически, любой специальный анализ сложных значений токенов (например, значения в CHANMODES=b,k,l,imnpstr) существует только для удобства. В том маловероятном случае, если будет добавлен новый тип токена, подобный этому, и библиотека еще не проанализирует его специально, пользователь все равно сможет получить доступ к значению в виде строки.
+1 - Я общался в IRC через telnet (только для фанатов)