IRCフレームワークCinchで人間でもできるIRCBot

GitHub - cinchrb/cinch: The IRC Bot Building Framework
IRCBotを作ってみたいなぁと思って調べたら、CinchというIRCBotフレームワークがとても簡単でよさげだったので使ってみました。
インストールはgemを使うだけ。

gem install cinch

使い方はとっても簡単で、例えばGithubにあるコードをあげると、あいさつを返すbotを作りたいと思ったらこうする。

require 'cinch'

bot = Cinch::Bot.new do
  configure do |c|
    c.server = "irc.freenode.org"
    c.channels = ["#cinch-bots"]
  end

  on :message, "hello" do |m|
    m.reply "Hello, #{m.user.nick}"
  end
end

bot.start

ね、簡単でしょ?

configureの部分に接続するサーバーやチャンネルなどの設定を書く。例えば下のような感じ。
この他にもできる設定はlib/cinch/bot_configuration.rbに書いてある。

bot = Cinch::Bot.new do
    configure do |c|
          c.server = "irc.hoge.net"
          c.port = 42
          c.password = 'foobar'
          c.channels = ["#foobarbaz"]
          c.nick = 'uiureo'
          c.realname = 'uiureo'
          c.user = 'uiureo'
     end
end

あるメッセージに返答するon :messageには正規表現も使える。helloが含まれるメッセージにHello!と返答するbotであればこんな風に書ける。

bot = Cinch::Bot.new do
  configure do |c|
    c.server = "irc.freenode.org"
    c.channels = ["#cinch-bots"]
  end
end

bot.on :message, /hello/ do |m|
    m.reply "Hello!"
end

日本語を扱うときは注意が必要で、自分の環境とIRCチャットの文字コードを考慮して適切に文字コードを変換しなければならない。

IRC_ENCODING='iso-2022-jp'

bot.on :message, /hello/ do |m|
    m.reply "こんにちは!".encode(IRC_ENCODING).force_encoding('external') 
end

Githubのページには例が多くのってるので、作りたいBotに合わせてコードを読むとよいです。
https://github.com/cinchrb/cinch/tree/master/examples