- Rubyでgemを用いてIRCにメッセージを書き込む方法をメモする
各gemによるサンプルコード
-
net-irc(0.0.9)
- botとして書き込み
net-irc-test.rb
gem 'net-irc'
gem 'kronparser'
require 'kronparser'
require 'net/irc'
class TestBot < Net::IRC::Client
attr_accessor :target_channels
def initialize(*args)
@target_channels = []
super(*args)
end
def on_rpl_welcome(m)
@target_channels.each do |channel|
post(JOIN, channel)
end
end
def talk(msgs, channels = @target_channels)
channels.each do |channel|
if msgs.class == Array
msgs.each do |msg| post(PRIVMSG, channel, msg) end
else
post(PRIVMSG, channel, msgs)
end
end
end
end
irc = TestBot.new("SERVER",
PORT,
:nick => "NICK",
:user => "USER",
:real => "REAL")
irc.target_channels = "#CHANNEL"
KronParser::SimpleProcess.every("40 17 * * 1-5") do
irc.talk("test")
end
irc.start
-
carrier-pigeon(0.6.0)
- 1行メッセージ書き込みで簡単に使えそう(cronやjenkinsなどでの通知に良いかも)
carrier-pigeon-test.rb
gem "carrier-pigeon"
require "carrier-pigeon"
CarrierPigeon.send(
:uri => "irc://USER@SERVER:PORT/#CHANNEL",
:message => "cooooo, coo coo\ncoo",
:join => true
)
- 2行以上の書き込みもできた
carrier-pigeon-test.rb
gem "carrier-pigeon"
require 'carrier-pigeon'
pigeon = CarrierPigeon.new(:host => "SERVER",
:port => PORT,
:nick => "USER",
:channel => "#CHANNEL",
:join => true)
pigeon.message("#CHANNEL", "test")
pigeon.message("#CHANNEL", "hoge")
pigeon.die
-
irc-socket(1.0.1)
- 2行以上のメッセージ書き込みする場合はこれでもいける(cronやjenkinsなどでの通知に良いかも)
irc-socket-test.rb
gem "irc-socket"
require 'irc-socket'
irc = IRCSocket.new("SERVER", PORT)
irc.connect
if irc.connected?
irc.nick "USER"
irc.user "USER", 0, "*", "test"
while line = irc.read
# Join a channel after MOTD
if line.split[1] == '376'
irc.join "#CHANNEL"
irc.privmsg "#CHANNEL", "hogehoge"
irc.privmsg "#CHANNEL", "hogehoge"
irc.part "#CHANNEL"
break
end
end
end