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