2006年 11月 12日

似非 Ircv

IRC を表示する DRb クライアント

require 'drb/drb'
require "rice/irc"
require "rice/observer"

class Ircv < RICE::SimpleClient
	def initialize(uri, nick, user, username, pass, *channels)
		super(nick, user, username, pass, *channels)
		@o = DRbObject.new_with_uri(uri)
	end

	def uped(subject, message)
		super
	end

	def message(subject, message)
		_, nick, user, host = */(.*?)!(.*?)@(.*?)/.match(message.prefix)
		line = '%s %s' % [nick, message.params.join(" ")]
		@o.call(line)
	end

	def downed(subject, message)
		super
	end
end

o = Ircv.new("druby://localhost:9876", "ircv", "ircv", "ircv", "password")
c = RICE::Connection.new('irc-gateway-host', 6667)
c.add_observer(o)

begin
	c.start
rescue RICE::Connection::Closed
	puts 'closed'
	sleep 30
	retry
end

てきとー