IRCサーバーとロイディ

Standard

人工無能について知る必要があって環境を作ったのでメモ。

  • unit hostingという国産のIaaSを利用。
    OSはCent OS 5.9 (unit hostingは今のところこれしか選べない)
  • IRCサーバーはyumでインストールできるircd-hybridを選択

 

ロイディとは

東京工業大学 ロボット技術研究会の市川 宙 (Gimite) さんが中心となって作成した日本語人工無脳。Rubyで書かれている。
http://rogiken.org/SSB/reudy.html
 
本家のロイディ(Reudy Ver.3.09)がRuby 1.9に対応していないので、今回は1.9でも動くように改変されたReudy1.9をRuby 2.0で動かした。
人工無能 Reudy (ロイディ) 1.9
https://github.com/Glasssaga/Reudy19
 
 
 

IRCサーバーの準備

IRCサーバー用にunit hosting上にサーバーを用意する。unit hostringのサーバー構築オプションにはユーザスクリプトなるものがあって、シェルスクリプトのURIを指定しておくと、構築完了後にrootユーザーでそのスクリプトを実行してくれる。Gist使うのが楽。
https://gist.github.com/bugcloud/5363980
 
↑でRVMとかrbenvでRubyのインストールとかできる状態になるはず。RPMforgeとEPELリポジトリも追加される。ircd-hybirdはEPELにあるのでyumでインストールする。デフォルトだと設定項目おおすぎて涙目になるのでシンプルなやつをコピーしてきて必要な部分だけ編集。

yum --enablerepo=epel install ircd-hybrid
cp /etc/ircd/ircd.conf /etc/ircd/ircd.conf.orig
cp -irp /usr/share/doc/ircd-hybrid-7.2.3/simple.conf /etc/ircd/ircd.conf

 
/etc/ircd/ircd.conf

serverinfo {
        name = "irc.example.com";
        sid = "000";
        description = "IRC Server";
        hub = no;
};

別にいらないけど一応パスワードを設定。

# YOUR_SALTは適当に変更
/usr/libexec/ircd/mkpasswd -m -s YOUR_SALT

“plaintext:”って表示されるのでパスワードを入力するとハッシュ化されたパスワードが表示される
/etc/ircd/ircd.confを編集

auth {
        user = "*@*";
        class = "users";
        password = "↑で表示されたパスワード";
        encrypted = yes;
};

 
起動と自動起動設定

service ircd start
chkconfig ircd on

 
終わり。これでIRCクライアントから接続可能なはず。SSLとか使ってないので変なこと言うのはやめましょう。
 
 
 

ロイディ

RVMでRubyをインストールする。その名の通りRuby 1.9向けに作られたReudy1.9はRuby 2.0でも動いた。Ruby 1.9でも動かしたけど、2.0のときだけ、ときどき発言してこなくなることがある気がした。
 

# Install RVM and Ruby 2.0
curl -#L https://get.rvm.io | bash -s stable --autolibs=3 --ruby

適当なディレクトリに https://github.com/Glasssaga/Reudy19 をcloneしたら設定ファイル(public/setting.yml)にIRCサーバーの情報とかを書く。:encoding:を”UTF-8“にしたら動かなかった。いつもの

incompatible character encodings: ASCII-8BIT and UTF-8

的なの出てオチる。
 
lib/reudy/bot_irc_client.rbに1行追加すると動く。

 48           #受信ループ。
 49           while line = sock.gets
 50             line = line.force_encoding(@user.settings[:encoding] || "ISO-2022-JP")
 51             on_recv(line)

 

# publicは設定ファイルやDB,ログのディレクトリ
ruby irc_reudy.rb public

でロイディ起動。publicディレクトリをコピーしてsetting.ymlのニックネームだけ変えれば複数のロイディを投入できる。
 
2013-04-12

20130412

 
一見ただのオウム返しに見えるけど、何気に会話として成立する率高い。