LoginSignup
5
5

More than 5 years have passed since last update.

ruby で IRC に繋いでみた

Last updated at Posted at 2012-11-25

IRCSocket という gem があったので試してみた。

gem install irc-socket

IRC の仕様は RFC を見ながら理解していく。
RFC1459 Internet Relay Chat Protocol

rom_irc.rb
require 'irc-socket'

server, port, nick, user = ARGV

irc = IRCSocket.new( server, port )
irc.connect

if irc.connected?
  irc.pass "hoge" # need to send PASS before you send NICK/USER
  irc.nick nick
  irc.user user, 0, "*", "Mr.${user}"
  irc.join "#hoge"

  while line=irc.read
    puts line
  end
end

IRCSocket のドキュメントにある例では PASS の送信が端折られているが、これが無いと接続を切られる。

ひとまず、上記のプログラムで、チャンネル #hoge のログが出るようになる。

ruby rom_irc.rb irc.example.com 6667 yancya yancya

しかし、このままだと、NICK や USER や JOIN に対するエラーリプライへの対応が全く出来ていない。
例えば、設定しようとしたニックネームがすでに使われている場合などにはそのまま接続が切れる。
あと、サーバーから PING メッセージが来たときに、速やかに PONG メッセージを返さないと接続を切られるので、対応が必要。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5