GTalkBot

[ruby][jabber][bot]GTalkBot
GoogleTalkで動作するチャットボットのサンプルを置いておくよ。

必要なもの

コード

#!ruby -Ku
$KCODE='u'
require 'sixamo'
require 'xmpp4r/client'
include Jabber

sixamo = Sixamo.new('sixamo')

# settings
myJID = JID::new('example@gmail.com')
myPassword = 'password'
cl = Client::new(myJID)
cl.connect
cl.auth(myPassword)
pl = Presence::new().set_show(:chat).set_status(sixamo.talk)
cl.send(pl)
puts "Connected ! send messages to #{myJID.strip.to_s}."
mainthread = Thread.current
cl.add_message_callback do |m|
  if m.type != :error
    sixamo.memorize(m.body)
    cl.send(pl.set_status(sixamo.talk(m.body))) if rand(30) < 5
    cl.send(Message::new(m.from, sixamo.talk(m.body)).set_type(m.type))
  end
end
Thread.stop
cl.close

このボットは、リスト登録されたアカウントから話しかけられたら、お返事を返します。
リスト登録は手動でやらなきゃらないけないのが難点。

*1:gem install -r -y jabber4r でおk

*2:gem install -r -y xmpp4r でおk

*3:wget http://yowaken.dip.jp/okiba/sixamo/sixamo.rb でおk