2006-10-22
■ [ruby] delegate.rbとfowardable.rbってどう違うの?
違いは、
- Forwardableは指定したメソッドのみを委譲する
- Delegateはぜんぶのメソッドを委譲する
です。(参考:るびま:標準添付ライブラリ紹介 【第 6 回】 委譲)
つーか、Forwardableってそもそもmethod_missing使ってないんですね*1。
*1 *_evalでメソッドをひとつずつ定義する
■ [ruby] はじめてのnadoka bot
nadokaのbotを書いてみたよ。
まず以下の内容で plugin/testbot.nb を保存する。(/somewhere/nadokabot/testbot.nbでもいい)
class TestBot < Nadoka::NDK_Bot def on_privmsg prefix, ch, msg if ch=="#example:*.jp" #チャンネル名が %example の場合 send_notice(ch, "#{prefix.inspect} ! #{ch.inspect} ! #{msg.inspect}") end end end
次に、nadokarcを以下のように書き換える。
BotFiles = [ 'testbot' ]
(testbot.nbをplugin/以外に置いた場合は、以下も)
Plugins_dir = ['./plugins', '/somewhere/nadokabot']
で、bot経由で「/nadoka reload」と発言する。"configuration reloaded"と帰ってきたら成功。
あとは、指定したチャンネルで適当になんか喋ると、botが
00:02 (yhara) #<Nadoka::NDK_Manager::PrefixObject:0x4039ca28 @user="yhara", @nick="yhara", @prefix="yhara!yhara@NadokaProgram", @host="NadokaProgram"> ! "#example:*.jp" ! "hoge"
みたいな感じで発言するはず。
あとは発言内容を変えるなりなんなり。
日本語を発言したいときは、
send_notice(ch, "こんにちは".tojis)
のようにjisコードに変換してやらないと文字化けすると思います。